Как подсчитать количество экземпляров НАБОР символов в столбце SQL

Мне нужно подсчитать экземпляры набора символов (aeıioöuü) в каждой строке.

Например:

"linebreak" should return 4.
"indent" should return 2
"quote" should return 3

Я могу сосчитать один символ с этим:

SELECT LENGTH(col) - LENGTH(REPLACE(col, 'a', ''))

Я также нашел способ подсчета набора символов:

SELECT LENGTH(col) - LENGTH(REPLACE(REPLACE(REPLACE(col, 'a', ''), 'e', ''), 'ı', ''))...

Однако этот запрос становится запутанным, поскольку он продолжает расти. Есть ли лучший метод с подстановочными знаками или что-то еще?


person sevenkul    schedule 21.01.2013    source источник
comment
я думаю, вы должны прочитать это stackoverflow .com/questions/1580017/   -  person WKordos    schedule 21.01.2013
comment
Приятно познакомиться с CLR UDF. Буду использовать в последующих проектах. Я использую более простой метод для моей реальной проблемы на данный момент.   -  person sevenkul    schedule 21.01.2013


Ответы (1)


Что мне на самом деле было нужно, так это строки с определенным количеством a, e, ı, i, o, ö, u или ü; а не количество случаев. Следующий запрос возвращает строки, содержащие только один гласный символ:

SELECT COUNT(*) AS cnt FROM [table]
WHERE col Like '%[aeıioöuü]%'
AND col NOT LIKE '%[aeıioöuü]%[aeıioöuü]%'

И это возвращает строки, которые содержат только два символа гласных:

SELECT COUNT(*) AS cnt FROM [table]
WHERE col Like '%[aeıioöuü]%[aeıioöuü]%'
AND col NOT LIKE '%[aeıioöuü]%[aeıioöuü]%[aeıioöuü]%'

И так далее...

person sevenkul    schedule 21.01.2013
comment
Когда я искал ответ на актуальную проблему, я нашел методы для подсчета символов, а затем замены символов, а затем CLR UDF, а затем Regex... - person sevenkul; 21.01.2013