Как посчитать, сколько раз символ появляется в столбце SQL? - PullRequest
40 голосов
/ 17 июля 2009

Для таблицы регистрации пользователей, которую я имею в базе данных SQL, я отслеживаю некоторые параметры из запроса отчета. Отчет позволяет передавать несколько идентификаторов, и я храню их в одном столбце в столбце базы данных. Если бы это был нормализованный набор данных, для этого, безусловно, была бы установлена ​​дополнительная таблица, но это то, что унаследовано ...

Теперь меня попросили быстро подсчитать, сколько раз был запущен отчет с передачей более двух ID. Я могу легко получить количество записей, для которых запрошено более одного отчета, поскольку все они содержат запятую.

Далее мне нужно посчитать, сколько раз в столбце появляется запятая. Как вы делаете это в SQL?

--count the number of times more than 1 report was requested in the record
select 
    count(*) as cnt
from
    [table]
where
    RequestedReportParams Like '%,%'

Ответы [ 2 ]

101 голосов
/ 17 июля 2009
SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....

Это просто сравнение длины столбца с запятыми, с длиной значения с удаленными запятыми, чтобы получить разницу (то есть количество запятых)

7 голосов
/ 17 июля 2009

Кажется, что быстрый и грязный способ ответить на вопрос, который вам задали, - это сделать:

select 
    count(*) as cnt
FROM 
    [table]
WHERE 
    RequestedReportParams Like '%,%,%'
...