我能使MySQL SELECT语法更聪明吗?



我注意到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]%'

假设你想要匹配"相似"的拼写,而不是两个单词听起来一样:)

最新更新