使用“喜欢”时mysql返回错误的结果

时间:2013-06-18 09:15:50

标签: mysql utf-8

是的,就像标题所说,你会想到utf8集名称问题......也许它甚至是真的。

我有这个问题:

select distinct ort from veranstaltungsorte where ort like 'ka%';

虽然它以“ka”开头,但我得到了“Köln”。连同3个正确的城市。

当我使用

select distinct ort from veranstaltungsorte where ort like 'kö%';

一切都是对的;只是我的数据库认为,Köln也以“ka”开头?!

我正在尝试字符集等等但是没有一个工作..任何想法?

3 个答案:

答案 0 :(得分:0)

utf8_general_ci会使用Ö

O进行排序

所以也许这就是你想要的。

有关此here

的更多信息

否则。如果您想搜索特定字符,例如ÄËÖ,您可以将其设置为utf8_swedish_ci,以便与ö一起使用

答案 1 :(得分:0)

这不是utf8_general_ci我之前已经尝试过了..它更像是这个:

ALTER TABLE tablename
CHANGE ort ort VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

重要提示:“喜欢”现在会对案例敏感。所以我将第一个字母大写,我就完成了。 不过感谢你的帮助。

答案 2 :(得分:0)

您实际存储在ort列中的数据看起来不正确:Köln实际上存储为Köln。这可以解释为什么在查找ka时获得匹配:就当前排序规则而言,Kà = ka

事实上你之前没有注意到这一点意味着你实际上有两个问题:

  1. 您现在在数据库中拥有的数据已损坏。您可以使用任何数据库工具进行检查。
  2. 您使用不正确的编码连接到数据库:您正在发送以UTF-8编码的字符串,而连接设置为latin1或类似的东西。
  3. 在您阅读和写入时发生相同字符重整的事实意味着您在使用应用程序时可能不会发现任何问题。