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

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

我有一个连接到 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/

相关文章:

具有重复项的 MySQL 排名函数

mysql - Sql 查询从多个表中检索数据

sql - 将 DELETE FROM 与 OUTPUT 结合使用时如何指定 ORDER BY?

mysql - rails ActiveRecord : Looking for a db agnostic version of this statement

ruby-on-rails - 帮助将两种不同的样式应用于 Ruby on Rails 复数化方法

尝试通过 pip 安装 mysql-connector 的 Python 错误

php - mysqli_stmt::bind_param():类型定义字符串中的元素数量与使用数组的绑定(bind)变量数量不匹配

sql - 创建用于存储高尔夫分数的可扩展数据库模式

sql - 用 ruby​​ on rails 模拟对称关系的最佳方法是什么?

ruby-on-rails - 如何更改为查看辅助方法?