我想知道是否有任何可能的方法,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.
我想知道是否有任何可能的方法,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.
对于这些类型的搜索功能,我认为您正在寻找匹配算法。您可以使用Levenshtein 距离算法,如果您使用 php,则有一个实现此算法的 php 函数levenshtein
来获取匹配数据,还有Needleman–Wunsch 算法,如果您的数据只有英文和一个单词列,您可以使用Soundex 算法。
这是一个开始,你会在 Mysql 中找到很多这些算法的实现。
如果您需要知道该字段包含您中的任何一个单词。
Select *
from table
where item like '%Dell%' OR item like '%Optiplex%' or item like '%390%'
这里有一个很好的答案已被删除,我会将答案修改为:
Select * from table where
lower(item) like '%dell%optiplex%390%' or
lower(item) like '%optiplex%390%' or
lower(item) like '%dell%laptop%390%' or ...
LIKE
使用带有通配符的 SQL子句:
SELECT *
FROM table
WHERE item LIKE '%Dell%Optiplex390%';
这是一个很好的参考指南: