t-sql:计算元素的数量

时间:2015-04-27 15:26:20

标签: sql sql-server

我在SQL Server 2008中有这样的表:

create table test (id int, array varchar(max))
insert into test values (1,',a,b,c,d')
insert into test values (2,',a,b,c,d,e')
insert into test values (3,',a,b,c')

我想计算数组列的元素数,结果如下:

id   count
---  -----
1    4 
2    5
3    3

如何在SELECT语句中实现这一点?我理解制作一个处理计数的函数可能有所帮助,但只是想知道它是否可以在没有用户定义函数的情况下实现。

2 个答案:

答案 0 :(得分:2)

到目前为止,最好的选择是停止在数据库中存储数组。这违反了1NF,这是一个糟糕的设计决定。

然而,您可以通过简单的替换获得您正在寻找的结果。

select ID
    , LEN(array) - LEN(replace(array, ',', ''))
from test

答案 1 :(得分:1)

你可以计算长度差异:

select id, len(array) - len(replace(array, ',', ''))
from test