MySQL" Advanced Where"询问

时间:2012-09-17 07:24:56

标签: mysql sql advanced-search

我想知道有没有办法,MySQL查询可以动态搜索WHERE子句中的任何内容。

例如,如果查询是

Select * 
from table 
where item = 'Dell Optiplex 390'

它应该搜索具有以下内容的行:

Dell Optiplex 390

Dell Desktop Optiplex 390

Dell Laptop Optiplex 390

Optiplex dual core 390

etc., etc.

4 个答案:

答案 0 :(得分:1)

对于这些搜索功能,我认为您正在寻找匹配算法。你可以使用Levenshtein Distance Algorithm,如果你使用php,有一个php函数levenshtein来实现这个算法,以获得匹配的数据,还有Needleman–Wunsch algorithm,如果你的数据是只有英文和一个单词栏,您可以使用Soundex Algorithm

这是一个开始,你会在Mysql中找到很多针对这些算法的实现。

答案 1 :(得分:1)

如果您需要知道该字段包含任何单词。

Select *  
from table  
where item like '%Dell%' OR item like '%Optiplex%' or item like '%390%'

答案 2 :(得分:0)

这里有一个很好的答案被删除,我会修改答案:

Select * from table where 
lower(item) like '%dell%optiplex%390%' or
lower(item) like '%optiplex%390%' or
lower(item) like '%dell%laptop%390%' or ...

答案 3 :(得分:0)

将SQL LIKE子句与通配符一起使用:

SELECT * 
FROM table 
WHERE item LIKE '%Dell%Optiplex390%';

这是一本很好的参考指南: