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

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

现在我已经被要求简短地记下一个报告运行的次数,超过2个ID被传递给它。 我可以很容易地得到有多个报告请求的logging数,因为它们都包含一个逗号。

接下来我要做的就是统计一个列中逗号的出现次数。 你如何在SQL中做到这一点?

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

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

看起来,回答你被问到的问题的快速和肮脏的方法是这样做的:

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