Найти количество повторяющихся подряд символов в строке через запрос SQL
Необходимо создать запрос в MS SQL, который будет выводить в колонку (Count) количество повторяющихся подряд символов (в моем случае цифр) из колонки (String) таблицы. Можно ли это сделать без использования внешних функций? Пример результата:
String | Count |
---|---|
12344444567 | 5 |
9584028176 | 1 |
99 | 2 |
Для обработки нулей использовал следующий код:
select String, case
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%1000000000) = 0) then 9
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%100000000) = 0) then 8
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%10000000) = 0) then 7
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%1000000) = 0) then 6
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%100000) = 0) then 5
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%10000) = 0) then 4
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%1000) = 0) then 3
when (cast(String as decimal(28,0)) <> 0 and ((cast(cast(String as numeric(28,2))as bigint))%100) = 0) then 2
end Count
from Table p
Обработать остальные цифры затрудняюсь.
Источник: Stack Overflow на русском