更具体的LIKE搜索定义的变量

时间:2017-01-04 21:38:46

标签: php mysql

我有一个脚本在我的数据库中搜索主题标签,我需要搜索s.data以查找定义$ tag的特定内容,并且是标签ex。 #peter当我搜索到rhashtag #peter时,我得到#peters #peterson #peterpeter的结果。我如何在最后剪掉字符串,以便只搜索与#peter

完全匹配的结果

我试过了

tensorflow

但是没有返回任何结果。 下面是我的原始代码

 REGEXP '[[:<:]]#$tag[[:>:]]' 

2 个答案:

答案 0 :(得分:2)

尝试:

 AND s.data REGEXP '#$tag[[:>:]]'

请勿在{{1​​}}之前使用[[:<:]],因为这只会在单词开头之前匹配,#不是单词字符。

另外,

#

最好写成:

(s.type='a' OR s.type='c' OR s.type='d')

如果s.type IN ('a', 'c', 'd') 是以逗号分隔的列表,则应使用$friendsCSV进行搜索:

FIND_IN_SET

FIND_IN_SET(s.author, '$friendsCSV') 期望每个值在IN列表中搜索单独的字符串,而不是带逗号的单个字符串。

答案 1 :(得分:0)

如果data中的数据类似于'#tag1#tag2#tag7#tag4',则此条件应该有效

(data LIKE '%#$tag#%' OR data LIKE '%#$tag')

我警告说,OR会失去索引优势,但领先的通配符已经成为一个没有实际意义的点。