我对斯洛伐克一无所知,对不起.但斯洛伐克的整理utf8_slovak_ci将斯洛伐克的信件?视为不同c.(做开头的姓氏Č都来后,那些开始Ç在电话簿?他们可能做的.MySQL的的创造者当然认为他们这样做.)
整理utf8_general_ci处理?和c相同.这是一个sql小提琴演示这一切.http://sqlfiddle.com/#!9/46c0e/1/0
如果更改包含产品名称的列的排序规则utf8_general_ci,您将获得一个更适合搜索的表.假设您的表被调用,product并且调用其中包含名称的列product_name.然后,此SQL数据定义语句将根据您的需要转换列.您应该查找列的实际数据类型,而不是varchar(nnn)像我在此示例中所做的那样使用.
alter table product modify product_name varchar(nnn) collate utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
如果您无法更改表,则可以将WHERE子句更改为此类,明确指定排序规则.
WHERE 'userInput' COLLATE utf8_general_ci = product_name
Run Code Online (Sandbox Code Playgroud)
但是,搜索比更改列排序规则要慢.
您可以使用MySQL 的SOUNDEX()或SOUNDS LIKE功能。
这些函数比较语音。
除了英语之外,soundex 的准确性值得怀疑。但是,如果我们像这样使用它,它可以得到改进
select soundex('ball')=soundex('boll') from dual
Run Code Online (Sandbox Code Playgroud)
SOUNDS LIKE也可以使用。
结合使用SOUNDEX()和SOUNDS LIKE会提高准确性。
请参阅 MySQL 文档了解详细信息或mysql-sounds-like-and-soundex