首页 新闻 会员 周边

SQL LIKE语句如何匹配关键词出现多次

0
悬赏园豆:50 [已解决问题] 解决于 2018-01-03 22:07

想在SQL Server中查询时匹配关键词出现多次的情况,尝试使用下面的SQL LIKE语句

SELECT *
FROM A
WHERE Text LIKE '%'+@Keyword+'%'+@Keyword+'%'+@Keyword+'%'

但出现一次关键词也会匹配,请问正确的匹配方法是什么?

sql
dudu的主页 dudu | 高人七级 | 园豆:30994
提问于:2018-01-03 09:19
< >
分享
最佳答案
1

SELECT *
FROM A
WHERE (len(Text)-len(replace(Text, '+@Keyword+', '')))>len('+@Keyword+')

未测试,原理:将匹配的字符串替换成空字符串,然后利用长度的减少量与字符串长度进行比较,判断是否被替换多次

收获园豆:50
nicky0227 | 小虾三级 |园豆:1069 | 2018-01-03 11:16

好办法

流年飞雨 | 园豆:1983 (小虾三级) | 2018-01-03 16:58

赞!最终采用了这个巧妙的方法

SELECT *
FROM A
WHERE (len([Text])-len(replace([Text], @Keyword, '')))/len(@Keyword) > 3
dudu | 园豆:30994 (高人七级) | 2018-01-03 22:07
其他回答(2)
0

SQL Server 并不支持 Regex 搜索,如果想要实现类似的查询,建议是

1、使用charindex和PATINDEX 组合达成所需要实现的目标。

2、或者自行使用CLR书写存储过程。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-01-03 09:28
0

select (select (select ))

是这个意思吧

花飘水流兮 | 园豆:13560 (专家六级) | 2018-01-03 10:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册