Select 来自多个输出 mysql 中带有特殊字符的输出

Select from several outputs the one with special characters in mysql

在我的数据库中,同一个词有两种形式。例如,当我搜索 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