Как считать varchar в varchar с помощью TSQL - PullRequest
2 голосов
/ 10 июля 2011

Как лучше всего сосчитать вихревое происшествие внутри варчара?

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

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

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 Ответ

6 голосов
/ 10 июля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...