示例,我的数据库中有一个名为RoséBrat
的用户我希望我的用户只能输入 Rose 来搜索Rosé,而不需要重音é。如何使用MySQL,我目前正在使用此查询:
SELECT * FROM users WHERE name LIKE '%$search_query%'
在键入Rose时不会搜索Rosé。
列名称是VARCHAR(60)utf8_unicode_ci
答案 0 :(得分:1)
尝试以下方法之一:
SELECT * FROM users WHERE name LIKE '%$search_query%' collate utf8_general_ci
或:
SELECT * FROM users WHERE name LIKE _utf8'%$search_query%' collate utf8_general_ci
答案 1 :(得分:-1)
你需要看看SOUNDEX()。
尝试类似
的内容SELECT * FROM users WHERE soundex(name) = soundex(''%$search_query%');
SOUNDEX接受一个单词中的字母/音节,并以这样的方式对它们进行编码,使得听起来相似的单词具有相似的编码值。您可能需要使用它来查看它为您做的搜索条件,但这可能是最简单的方法。
答案 2 :(得分:-1)
你可以考虑soundex,虽然它也可以拉“玫瑰色”“玫瑰色”和“玫瑰色”。
https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex
可能是这样的:
select * from users where soundex(name) = soundex('%$search_query%') ;
可能想要确保使用正确的php绑定来避免任何sql注入。
除此之外,我想到的唯一可能是使用一些正则表达式或翻译来替换可能变得混乱的字符。