我们在数据库中有一个名为mobile(varchar 30 - utf8_persian_ci)
的列,其中包含一些手机号码
其中一些不是英文,我试图找到并编辑它们
它们都以٠٩
开头,等于09
SELECT *
FROM `users`
WHERE mobile LIKE "%٠٩%"
但是此查询会返回所有数字,包括以09
开头的英文数字!
答案 0 :(得分:1)
这是因为您的数据库无法识别非英文字符。尝试使用utf_general_ci
排序规则。这可能会解决您的问题。您可以使用以下命令更改数据库归类:
ALTER DATABASE <database_name> CHARACTER SET utf8 COLLATE utf_general_ci;
这将改变表格整理:
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8 COLLATE utf_general_ci;
修改强>
:我使用utf_general_ci
进行了检查。适合我。
答案 1 :(得分:1)
你应该使用utf8_bin而不是utf8_persian_ci来避免等价问题(09相当于09)
请参阅: MySQL distinction between e and é (e acute) - UNIQUE index