假设我有一张Col2
是varchar
Col1 Col2
1 001,002
2 003,004,005
我需要计算Col2中的元素数量,如果我这样做,则返回它:
select --do something here with column-- from table
它会给我:
2
3
答案 0 :(得分:19)
因此,通过计算您在Col2中的,
个数量并向其中添加1将为您提供答案。下面我得到了Col2的长度。然后我用什么都替换,
s并得到那个长度。我取第一个长度并减去第二个长度以得到逗号的总数。然后只需在结果中添加1即可获得您要查找的总数:
SELECT (LENGTH(Col2) - LENGTH(REPLACE(Col2,",","")) + 1) AS MyCol2Count
FROM MyTable
答案 1 :(得分:14)
如果它总是像count the number of commas那样格式化,然后添加1:
select regexp_count(col, ',') + 1
from table
答案 2 :(得分:1)
在Col2为空的特殊情况下,Linger的答案是不正确的。您可以获得错误的计数,而不是计数为0.您可以使用CASE语句解释此特殊情况,如下所示:
SELECT CASE WHEN Col2='' THEN 0 ELSE LENGTH(Col2)-LENGTH(REPLACE(Col2,",",""))+1 END AS MyCol2Count
FROM MyTable
编辑:正如William指出空字符串WHEN测试可能不准确,如果您的表设置为允许相关列的NULL。在这种情况下,您需要将 Col2 =''测试替换为 Col2 IS NULL (至少在SQL Server中)。
注意:道歉,我会把这个作为对Linger答案的评论,但我不能发表评论。