MySQL LIKE语句将“o”和“ö”解释为相同

时间:2011-03-20 13:17:30

标签: mysql sql ruby-on-rails-3 collation

我有一个连接到MySQL数据库的Rails 3应用程序。使用的编码是utf-8。该数据库以瑞典语连接大量数据并具有搜索功能。

当我搜索gotland(瑞典岛)时,也会返回Östergötland(一个郡)的结果。显然,MySQL将ö解释为o

是否有一种简单的方法可以确保location LIKE '%gotland%'不会返回包含götland的字段?

干杯。

1 个答案:

答案 0 :(得分:8)

我相信通过在COLLATE utf8_swedish_ci语句后添加LIKE,您将得到您想要的内容。

SELECT * FROM places WHERE name LIKE '%gotland%' COLLATE utf8_swedish_ci;

或者,如果latin1_swedish_ci是您的字符集,则可能需要使用latin1

我并非100%确定这会修复LIKE语句中的字符比较,但逻辑上应该这样做。

来源: