查找以09开头的非英语数字将返回以09开头的行

时间:2015-08-12 12:22:54

标签: mysql

我们在数据库中有一个名为mobile(varchar 30 - utf8_persian_ci)的列,其中包含一些手机号码

其中一些不是英文,我试图找到并编辑它们

它们都以٠٩开头,等于09

SELECT *
FROM `users`
WHERE mobile LIKE "%٠٩%"

但是此查询会返回所有数字,包括以09开头的英文数字!

2 个答案:

答案 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