如何在MYSQL中匹配编码的变音符号?

时间:2013-02-06 20:46:13

标签: mysql sql

在过去差不多十年的项目中,我们在带有html实体的MYSQL数据库中编写了diacitical标记。所有这些看起来都很棒,但是它可能会如此。使用此数据库的应用程序实现了搜索功能,我的问题是,当搜索的字符串包含变音标记时,搜索无法正常工作。例如:"für"

简化的MySQL查询如下所示:

SELECT kunstwerk. * , kategorie.published, kategorie.bezeichnung
FROM kunstwerk
LEFT JOIN kategorie ON SUBSTRING( kategorie, 1, 7 ) = kategorie_Nr
WHERE published = 'true'
AND published_veto <> 'false'
AND MATCH (titel_DE)
AGAINST (
  '+f&uuml;r '
  IN BOOLEAN MODE
)
ORDER BY kategorie

我的问题是,无论"&uuml;"中的周围字符是什么,它都会匹配包含"f&uuml;r"的任何内容。

这是什么原因?

1 个答案:

答案 0 :(得分:1)

我不是百分之百确定这里发生了什么,但mySQL显然在&;控制字符上窒息。 (我怀疑它最终只搜索uuml部分)。

无论如何,用引号括起这个术语会有所帮助:

AGAINST (
  '+"f&uuml;r" '
  IN BOOLEAN MODE
)