如何在MySQL中进行口音敏感搜索

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

我有一个MySQL表与UTF 8一般的CI校对。在表中,我可以看到两个条目:

abad

abád

我使用的查询如下:

SELECT *  FROM `words` WHERE `word` = 'abád'

查询结果给出了两个单词:

abad

abád

有没有办法表明我只想让MySQL找到重音词?我希望查询只返回

abad

我也尝试过这样的查询:

SELECT *  FROM `words` WHERE BINARY `word` = 'abád'

它没有给我任何结果。谢谢你的帮助。

提问于
用户回答回答于

如果对该字段的搜索总是对重音敏感,那么将该字段的排序规则声明为utf 8。_bin(这将比较UTF 8编码字节的相等性)或使用语言特定的排序规则来区分重音字符和非重音字符。

col_name varchar(10) collate utf8_bin

如果搜索通常是重音不敏感的,但是想要为这个搜索做一个例外,尝试;

WHERE col_name = 'abád' collate utf8_bin
用户回答回答于

在我的版本(mysql 5.0)中,没有任何UTF 8字符集排序规则可用于区分大小写、区分重音的搜索。UTF 8唯一的重音敏感排序规则是UTF 8。_宾。然而,它也是区分大小写的。

我的工作就是用这样的方法:

SELECT * FROM `words` WHERE LOWER(column) = LOWER('aBád') COLLATE utf8_bin

扫码关注云+社区