[英]Trailing whitespace in varchar needs to be considered in comparison
我正在使用帶有 varchar 列的表。 我沒有意識到在比較中不考慮尾隨空格(顯然,兩個僅尾隨空格數量不同的值將違反唯一性屬性,如果指定)。
我需要在桌子上解決這個問題,最好是到位。 在 MySQL 中是否有修復這樣的表的推薦路徑?
我嚴格通過我控制的程序訪問數據庫,因此切換到非人類可讀的格式(如二進制)會很好。 但我不確定如何做這樣的事情,也不想破壞桌子。
你能在有空格的表字段上運行空查詢嗎?
RTRIM(str)
返回刪除了尾隨空格字符的字符串 str。 mysql> SELECT RTRIM('barbar'); -> 'barbar' 這個函數是多字節安全的。
這是古老的,但您也可以使用binary
關鍵字。
mysql> select 'hello'='hello ', binary 'hello'='hello ';
+-------------------+--------------------------+
| 'hello'='hello ' | binary 'hello'='hello ' |
+-------------------+--------------------------+
| 1 | 0 |
+-------------------+--------------------------+
1 row in set (0.00 sec)
這也將使搜索區分大小寫。
mysql> select 'hello'='HELLO', binary 'hello'='HELLO';
+-----------------+------------------------+
| 'hello'='HELLO' | binary 'hello'='HELLO' |
+-----------------+------------------------+
| 1 | 0 |
+-----------------+------------------------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.