如何计算字符在SQL列中出现的次数?

时间:2009-07-17 15:55:30

标签: sql tsql char

对于我在SQL数据库中的用户日志记录表,我跟踪报告请求中的一些参数。该报告允许将多个ID传递给它,并将所有这些ID存储在数据库列的单个列中。如果这是一个规范化的数据集,肯定会有一个额外的表设置,但这是继承的......

我现在被要求快速计算报告运行的次数,并且传递了超过2个ID。我可以很容易地获得请求超过1个报告的记录数,因为它们都包含逗号。

接下来需要做的是计算逗号在列中出现的次数。你如何在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 个答案:

答案 0 :(得分:101)

SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....

这只是比较列的长度和逗号,删除逗号的值的长度,以给出差异(即逗号的数量)

答案 1 :(得分:7)

回答你被问到的问题似乎是快速而又肮脏的方式:

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