0

我想知道是否有任何可能的方法,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

4 回答 4

1

对于这些类型的搜索功能,我认为您正在寻找匹配算法。您可以使用Levenshtein 距离算法,如果您使用 php,则有一个实现此算法的 php 函数levenshtein来获取匹配数据,还有Needleman–Wunsch 算法,如果您的数据只有英文和一个单词列,您可以使用Soundex 算法

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

于 2012-09-17T07:33:46.710 回答
1

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

Select *  
from table  
where item like '%Dell%' OR item like '%Optiplex%' or item like '%390%'
于 2012-09-17T07:34:20.633 回答
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 ...
于 2012-09-17T07:31:05.757 回答
0

LIKE使用带有通配符的 SQL子句:

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

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

于 2012-09-17T07:36:03.807 回答