对于我在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 '%,%'
Run Code Online (Sandbox Code Playgroud)
Ada*_*Dev 102
SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....
Run Code Online (Sandbox Code Playgroud)
这只是比较列的长度和逗号,删除逗号的值的长度,以给出差异(即逗号的数量)
小智 7
似乎回答你被问到的问题的快速而肮脏的方式是这样做:
select
count(*) as cnt
FROM
[table]
WHERE
RequestedReportParams Like '%,%,%'
Run Code Online (Sandbox Code Playgroud)