為什麼 MySQL 忽略唯一欄位中的尾隨空格?

Mary-Kate Olsen
發布: 2024-10-31 21:12:29
原創
312 人瀏覽過

Why Is MySQL Ignoring Trailing Spaces in Unique Fields?

MySQL 資料庫忽略唯一欄位的尾隨空格

在MySQL 中建立具有唯一欄位的資料庫時,期望包含前導或尾隨的值空格應被視為不同的。然而,據觀察,尾隨空格在插入過程中被修剪掉,導致在嘗試插入具有不同尾隨空格的單字時出現重複值錯誤。

根本問題在於 MySQL 的預設字串比較行為,它忽略了尾隨空格。因此,UNIQUE 索引使用標準字串比較,導致它忽略尾隨空格並拒絕基於字元相等的插入。

要解決此問題,一種方法是將值儲存為 VARBINARY,它保留空格並允許建立尊重尾隨空白的唯一索引。雖然它允許儲存具有不同空間的值,但需要注意的是,按這些值排序可能不會產生預期的結果。

另一個解決方案是利用 MySQL 的 NO PAD 排序規則,該排序規則已在 MySQL 8.0 中引入。這些排序規則(例如 utf8mb4_0900_ai_ci)在處理字串比較時不會忽略尾隨空格。透過使用 NO PAD 排序規則建立唯一字段,您可以確保具有不同尾隨空格的值被視為不同的。

以上是為什麼 MySQL 忽略唯一欄位中的尾隨空格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!