Как считать varchar в varchar с помощью TSQL

Каков наилучший способ подсчитать возникновение варчара внутри варчара?

Я скорее не перебираю текст, чтобы найти определенные комбинации.

Этот выбор только найти первый

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

Возвращает 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

Ожидаемый результат

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

Использование mssql server 2005

1 ответ

Решение

Вы могли бы использовать replace сделать каждое вхождение на 1 символ длиннее и посчитать количество добавленных символов:

select  len(replace(txt, search, search + '#')) - len(txt) as Count
,       *
from    YourTable

Полный пример на SE Data.

Другие вопросы по тегам