Как подсчитать количество символов в столбце SQL - PullRequest
92 голосов
/ 07 декабря 2009

У меня есть столбец SQL, который представляет собой строку из 100 символов «Y» или «N». Например:

YYNYNYYNNNYYNY ...

Какой самый простой способ получить количество всех символов Y в каждом ряду.

Ответы [ 15 ]

1 голос
/ 11 июля 2016

Попробуйте это. Это определяет нет. вхождений одного символа, а также вхождений подстроки в основной строке.

SELECT COUNT(DECODE(SUBSTR(UPPER(:main_string),rownum,LENGTH(:search_char)),UPPER(:search_char),1)) search_char_count
FROM DUAL
connect by rownum <= length(:main_string);
1 голос
/ 10 ноября 2015

попробуйте

declare @v varchar(250) = 'test.a,1  ;hheuw-20;'
-- LF   ;
select len(replace(@v,';','11'))-len(@v)
0 голосов
/ 02 мая 2019

Если вам нужно посчитать символ в строке с более чем двумя типами символов, вы можете использовать вместо 'n' - некоторый оператор или регулярное выражение символов, принимающих нужный вам символ.

SELECT LEN(REPLACE(col, 'N', ''))
0 голосов
/ 11 октября 2017

например, для вычисления количества экземпляров символа (а) в столбце SQL -> имя - имя столбца '' (а в кавычках пусто, я заменяю на nocharecter @ '')

выберите len (имя) - len (заменить (имя, 'a', '')) из TESTING

выбрать len ('YYNYNYYNNNYYNY') - len (заменить ('YYNYNYYNNNYYNY', 'y', ''))

0 голосов
/ 05 февраля 2015

Вот то, что я использовал в Oracle SQL, чтобы проверить, передает ли кто-то правильно отформатированный номер телефона:

WHERE REPLACE(TRANSLATE('555-555-1212','0123456789-','00000000000'),'0','') IS NULL AND
LENGTH(REPLACE(TRANSLATE('555-555-1212','0123456789','0000000000'),'0','')) = 2

Первая часть проверяет, есть ли в номере телефона только цифры, а дефис, а вторая часть проверяет, что номер телефона имеет только два дефиса.

...