我注意到LIKE'a%'会以'árbol'返回结果,但LIKE'AE%'不会返回“Æther”之类的结果。 LIKE聪明的程度是多少?假设我有这些数据库条目:
Black Blue
Black Blew
有没有办法让MySQL与LIKE'Black Bleu'巧妙地匹配(因为它们非常接近)?或者LIKE'_%'只能匹配确切的字符,具有上述异常?
答案 0 :(得分:4)
MySQL的全文搜索非常有限,因为它是一个数据库,而不是一个搜索引擎。
你应该研究像Apache Solr这样的东西,它支持各种各样的事情,比如“听起来像”匹配,干扰(即“聪明”和“智能”是相同的)等等。
答案 1 :(得分:2)
另一个选择是使用SOUNDEX或SOUNDS LIKE运算符
http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#operator_sounds-like
http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_soundex
mysql> SELECT SOUNDEX('Blue'), SOUNDEX('Blew'), SOUNDEX('Blue') = SOUNDEX('Blew');
+-----------------+-----------------+-----------------------------------+
| SOUNDEX('Blue') | SOUNDEX('Blew') | SOUNDEX('Blue') = SOUNDEX('Blew') |
+-----------------+-----------------+-----------------------------------+
| B400 | B400 | 1 |
+-----------------+-----------------+-----------------------------------+
1 row in set (0.00 sec)
答案 2 :(得分:0)
不确定MySQL,但在SQL Server上,正则表达式是你的朋友
SELECT * FROM Table WHERE Field LIKE 'Black Bl[e|u]%'
假设你想要匹配'相似'的拼写,而不是两个单词听起来相同的事实:)