在我的数据库中,同一个单词有两种形式。例如,当我搜索 amor
时,我会得到 amor
和 āmōr
。如何从数据库中获取āmōr
。
最佳答案
如果您不想搞乱排序规则(出于某种原因):
SELECT a.text
FROM table a
WHERE a.text = 'amor'
AND BINARY(a.text) = BINARY('amor')
我将第一个条件保留为纯文本,以便 MySQL 可以在 text
上使用索引(如果存在)。第二个条件将确保您只获得您搜索的确切文本(包括大小写)。
编辑:基于评论。
如果您确实想获得带重音的结果,则需要使用忽略此类重音的排序规则。您需要使用的排序规则取决于列的排序规则..
尝试以下任一方法:
SELECT a.text
FROM table a
WHERE a.text = 'amor'
COLLATE 'utf8_general_ci';
或者:
SELECT a.text
FROM table a
WHERE a.text = 'amor'
COLLATE 'latin1_general_ci';
编辑#2:基于更多评论。
如果存在多个匹配项,则始终获取带重音的版本:
SELECT a.text
FROM table a
WHERE a.text = 'amor' -- this condition returns both results
ORDER BY LENGTH(BINARY(a.text)) DESC
LIMIT 1
关于php - 从多个输出中选择mysql中带有特殊字符的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40368692/