【发布时间】:2015-08-12 12:22:53
【问题描述】:
我们在数据库中有一个名为mobile(varchar 30 - utf8_persian_ci) 的列,其中包含一些手机号码
其中一些不是英文的,我正在尝试查找和编辑它们
它们都以٠٩ 开头,等于09
SELECT *
FROM `users`
WHERE mobile LIKE "%٠٩%"
但此查询返回所有数字,包括以 09 开头的英文数字!
【问题讨论】:
标签: mysql
我们在数据库中有一个名为mobile(varchar 30 - utf8_persian_ci) 的列,其中包含一些手机号码
其中一些不是英文的,我正在尝试查找和编辑它们
它们都以٠٩ 开头,等于09
SELECT *
FROM `users`
WHERE mobile LIKE "%٠٩%"
但此查询返回所有数字,包括以 09 开头的英文数字!
【问题讨论】:
标签: mysql
您可能应该使用 utf8_bin 而不是 utf8_persian_ci 以避免等价问题(٠٩ 相当于 09)
见: MySQL distinction between e and é (e acute) - UNIQUE index
【讨论】:
这是因为,您的数据库无法识别非英文字符。尝试使用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 进行了检查。非常适合我。
【讨论】: