我有一个连接到 MySQL 数据库的 Rails 3 应用程序。使用的编码是utf-8。该数据库连接了大量瑞典语数据,并具有搜索功能。
当我搜索 gotland
(一个瑞典岛屿)时,也会返回 Östergötland
(一个郡)的结果。显然 MySQL 将 ö
解释为 o
。
有没有一种简单的方法可以确保 location LIKE '%gotland%'
不会返回包含 götland
的字段?
干杯。
最佳答案
我相信通过在 LIKE
语句之后添加 COLLATE utf8_swedish_ci
,您会得到想要的。
SELECT * FROM places WHERE name LIKE '%gotland%' COLLATE utf8_swedish_ci;
或者,如果 latin1
是您的字符集,您可能想要使用 latin1_swedish_ci
。
我不能 100% 确定这会修复 LIKE
语句中的字符比较,但逻辑上应该如此。
来源:
关于MySQL LIKE 语句将 "o"和 "ö"解释为相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368717/