MySQL LIKE - 部分匹配最多2个不同的字符

时间:2014-08-16 11:57:07

标签: mysql

试图寻找部分匹配:

  

SELECT * FROM watches_check WHERE modelNumber LIKE   ' URL

示例数据:

URL: http://www.domain.com/s/keywords=AK-1470GBST&id=123456
modelNumber: AK-1470GBST

我想查找modelNumber是否在URL字段中,但它始终返回0结果。 我哪里出错了?

此外,是否可以找到部分匹配,其中有1或2个字符不同,例如AK-1470GBST vs AK / 1470GBST('/'而不是' - ')将被视为匹配

2 个答案:

答案 0 :(得分:0)

第一个问题的答案是让SQL正确无误。我想你想要:

SELECT *
FROM watches_check
WHERE URL like concat('%', modelNumber, '%');

注意:单引号已从“网址”中删除,并且通配符已添加到搜索中。

第二个问题的答案是一种称为Levenshtein距离的技术(参见维基百科页面here)。如果你谷歌“Levenshtein mysql”,你会发现该算法的各种实现。

答案 1 :(得分:0)

您可以使用

SELECT * FROM watches_check WHERE INSTR(URL, modelNumber) > 0

检查您的网址是否包含modelNumber。如果你的modelNumber包含LIKE模式的通配符:%_,这甚至可以工作。

它不会返回部分匹配。看看戈登的答案。