想在SQL Server中查询时匹配关键词出现多次的情况,尝试使用下面的SQL LIKE语句
SELECT *
FROM A
WHERE Text LIKE '%'+@Keyword+'%'+@Keyword+'%'+@Keyword+'%'
但出现一次关键词也会匹配,请问正确的匹配方法是什么?
SELECT *
FROM A
WHERE (len(Text)-len(replace(Text, '+@Keyword+', '')))>len('+@Keyword+')
未测试,原理:将匹配的字符串替换成空字符串,然后利用长度的减少量与字符串长度进行比较,判断是否被替换多次
好办法
赞!最终采用了这个巧妙的方法
SELECT *
FROM A
WHERE (len([Text])-len(replace([Text], @Keyword, '')))/len(@Keyword) > 3
SQL Server 并不支持 Regex 搜索,如果想要实现类似的查询,建议是
1、使用charindex和PATINDEX 组合达成所需要实现的目标。
2、或者自行使用CLR书写存储过程。
select (select (select ))
是这个意思吧