我在mysql的表中有一个varchar列。当我对此列进行搜索时,如果我搜索'%asd%',则会出现包含'aşd'的记录。有办法防止这种情况吗?
我已经尝试了几乎所有可能的整理,它的行为相同。通常我使用utf8mb4_unicode_ci。
答案 0 :(得分:1)
您可以将COLLATION设置为UTF8_BIN
MariaDB [(none)]> SELECT
-> 'aşd' LIKE 'asd' COLLATE 'utf8_bin' AS BIN,
-> 'aşd' LIKE 'asd' COLLATE 'utf8_general_ci' AS CI;
+------+------+
| BIN | CI |
+------+------+
| 0 | 1 |
+------+------+
1 row in set (0.00 sec)
你也可以将它放在WHERE Clause中,如
SELECT * FROM YOUR_TABLE WHERE VARFIELD like 'asd' COLLATE 'utf8_bin';