如何使用TSQL计算varchar中的varchar

t-c*_*.dk 2 sql t-sql textmatching

计算varchar中varchar出现次数的最佳方法是什么?

我宁愿不循环文本以找到某些组合.

这个选择只找到第一个

SELECT CASE WHEN CHARINDEX('!','HOW MANY TIMES IS ! IN THIS TEXT ? THIS IS MY QUESTION !' ) > 0 THEN 1 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)

返回1

我需要一种方法来查找匹配的总数

TABLE DATA
SEARCHTEXT     LONGTEXT
!              HOW MANY TIMES IS ! IN THIS TEXT ? THIS IS MY QUESTION !
HELLO          HELLO HELLO HELLO HELLO HELLO HELLO
L              HELLO HELLO HELLO HELLO HELLO HELLO
e              more testdata
Run Code Online (Sandbox Code Playgroud)

预期结果

Count SEARCHTEXT  LONGTEST
2     !           MANY TIMES IS ! IN THIS TEXT ? THIS IS MY QUESTION !
6     HELLO       HELLO HELLO HELLO HELLO HELLO HELLO
12    L           HELLO HELLO HELLO HELLO HELLO HELLO
2     e           more testdata
Run Code Online (Sandbox Code Playgroud)

使用mssql server 2005

And*_*mar 6

您可以使用replace每个出现1个字符更长的时间,并计算添加的字符数:

select  len(replace(txt, search, search + '#')) - len(txt) as Count
,       *
from    YourTable
Run Code Online (Sandbox Code Playgroud)

SE数据的完整示例.