mySQL select í 返回具有 i 的结果

18 浏览
0 Comments

mySQL select í 返回具有 i 的结果

我有一个设置好的表,其中字段是TEXT utf8_general_ci

字段数据设置为Jovíkhan(í实际上是ALT-161)。

我搜索Jovikhan(普通的i,而不是ALT-161),返回所有结果,就好像我实际上使用了ALT-161的í。

SELECT * FROM Table WHERE Field = 'Jovikhan';

这让我有点疯狂...我目前在phpMyAdmin中遇到了这个问题...为什么它会返回那些字段,尤其是如果我使用= 'Jovikhan'而不是LIKE '%Jov%'

0
0 Comments

问题出现的原因是因为在MySQL中,默认的字符集排序规则为utf_general_ci,其中的_ci表示不区分大小写。这导致MySQL将ií视为相同的字符。解决方法是在查询语句中添加COLLATE utf8_bin来指定使用二进制排序规则,如下所示:

SELECT * FROM Table WHERE Field = 'Jovikhan' COLLATE utf8_bin;

这样可以确保区分大小写,返回正确的结果。

更多讨论和解答,请参考这篇帖子

为什么你要提到另一个与原帖问题和你的答案基本相同的帖子?请关闭并标记为重复。

我觉得那个问题的接受答案的前半部分可以表述得更清楚。不过我也投票赞成关闭。

非常感谢...我确实进行了搜索,但没有找到什么特别突出的内容...也许你不应该标记为重复,因为有人可能会觉得这个帖子有用。

0