我有一个脚本在我的数据库中搜索主题标签,我需要搜索s.data以查找定义$ tag的特定内容,并且是标签ex。 #peter当我搜索到rhashtag #peter时,我得到#peters #peterson #peterpeter的结果。我如何在最后剪掉字符串,以便只搜索与#peter
完全匹配的结果我试过了
tensorflow
但是没有返回任何结果。 下面是我的原始代码
REGEXP '[[:<:]]#$tag[[:>:]]'
答案 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
会失去索引优势,但领先的通配符已经成为一个没有实际意义的点。