对于我在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 '%,%'
答案 0 :(得分:101)
SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....
这只是比较列的长度和逗号,删除逗号的值的长度,以给出差异(即逗号的数量)
答案 1 :(得分:7)
回答你被问到的问题似乎是快速而又肮脏的方式:
select
count(*) as cnt
FROM
[table]
WHERE
RequestedReportParams Like '%,%,%'