MySQL字符串与通配符的比较

时间:2014-04-22 21:18:32

标签: mysql wildcard string-comparison

我写了一个查询,用户可以输入一个字符串,并从数据库中获取与该字符串相关的数据。

例如,即使全名是Apple Inc,用户也会输入Apple。

代码将如此布局......

and Description like '%Apple%'

问题在于,它将与Apple一起返回Snapple 除了删除第一个"%"通配符并使用户输入更多内容,如何将结果限制为Apple?

2 个答案:

答案 0 :(得分:2)

使用正则表达式:

WHERE Description RLIKE '[[:<:]]apple[[:>:]]'

[[:<:]]匹配单词的开头,[[:>:]]匹配单词的结尾。

有关MySQL支持的所有regexp运算符,请参阅documentation

答案 1 :(得分:0)

首先 - 与外卡(尤其是领先的外卡)的字符串比较并没有真正使用“喜欢”进行扩展。您可能希望查看full-text searching。这基本上为您提供了“类似谷歌”的文本搜索功能。

要回答你的问题,在大多数情况下,对于术语“苹果”而言,“Apple”比“Snapple”更好。因此,您可以在搜索中包含“匹配质量”的概念 - 例如:

select *, 10 as MatchQuality
from table
where description like 'Apple'
union
select *, 5 as MatchQuality
from table
where description like 'Apple%'
union 
select *, 1 as MatchQuality
from table
where description like '%Apple%'
相关问题