【发布时间】:2016-12-02 20:01:45
【问题描述】:
我正在尝试构建一个 MySQL 搜索查询。 LIKE 完全可以,但客户希望输入带有“oe”找到“ö”、“ae”找到“ä”和“ue”找到“ü”,因为这在德国相当普遍。
在将每次出现的“oe”替换为(oe|ö) 之后,我尝试使用REGEXP,但REGEXP 是严格的并且不匹配(例如)“é”到“e”。
有没有办法让 LIKE 匹配 "oe|ue|ae" 或者我没有想到的其他方式?
谢谢,
托马斯
【问题讨论】:
-
哇,真快。在我完成之前投了反对票...... :(
-
或许可以考虑投资像 Solr 这样的搜索引擎。
-
提示:在mysql中设置utf8_general然后
e会找到èstackoverflow.com/questions/2344118/utf-8-general-bin-unicode -
不使用正则表达式 @JustOnUnderMillions
-
我不会使用正则表达式。 Mysql 的正则表达式不适用于多字节字符。
The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multibyte safe and may produce unexpected results with multibyte character sets.dev.mysql.com/doc/refman/5.7/en/regexp.html