我注意到LIKE 'a%'会返回'árbol'的结果,但LIKE 'AE%'不会返回像"Æther"的结果。LIKE有多聪明?假设我有这些数据库条目:
Black Blue
Black Blew
是否有办法让MySQL与'Black Bleu'巧妙地匹配(因为它们非常接近)?还是LIKE '_%'只能匹配精确的字符,除了前面提到的例外?
MySQL的全文搜索是相当有限的,因为它是一个数据库,而不是一个搜索引擎。
你应该看看像Apache Solr这样的东西,它支持各种各样的东西,比如"听起来像"匹配,词干提取(即:"smarter"one_answers"smart"是一样的),等等
另一个选择是使用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)
不确定MySQL,但在SQL Server上,正则表达式是你的朋友
SELECT * FROM Table WHERE Field LIKE 'Black Bl[e|u]%'
假设你想要匹配"相似"的拼写,而不是两个单词听起来一样:)