MySQL 資料庫忽略唯一欄位的尾隨空格
在MySQL 中建立具有唯一欄位的資料庫時,期望包含前導或尾隨的值空格應被視為不同的。然而,據觀察,尾隨空格在插入過程中被修剪掉,導致在嘗試插入具有不同尾隨空格的單字時出現重複值錯誤。
根本問題在於 MySQL 的預設字串比較行為,它忽略了尾隨空格。因此,UNIQUE 索引使用標準字串比較,導致它忽略尾隨空格並拒絕基於字元相等的插入。
要解決此問題,一種方法是將值儲存為 VARBINARY,它保留空格並允許建立尊重尾隨空白的唯一索引。雖然它允許儲存具有不同空間的值,但需要注意的是,按這些值排序可能不會產生預期的結果。
另一個解決方案是利用 MySQL 的 NO PAD 排序規則,該排序規則已在 MySQL 8.0 中引入。這些排序規則(例如 utf8mb4_0900_ai_ci)在處理字串比較時不會忽略尾隨空格。透過使用 NO PAD 排序規則建立唯一字段,您可以確保具有不同尾隨空格的值被視為不同的。
以上是為什麼 MySQL 忽略唯一欄位中的尾隨空格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!