我有一个表,我保存一些数据,包括数字列表。
像这样:
| 数字|
| - ------|
| (无)|
| 42593|
| 42593 42594 36725 42592 36725 42592|
| 42593恩42594恩36725恩42592|
| 31046 36725 42592|
我想计算SQL Server中每行的元素数
| 计数|
| - ------|
| 无|
| 1个|
| 六个|
| 四个|
| 三个|
我有一个表,我保存一些数据,包括数字列表。
像这样:
| 数字|
| - ------|
| (无)|
| 42593|
| 42593 42594 36725 42592 36725 42592|
| 42593恩42594恩36725恩42592|
| 31046 36725 42592|
我想计算SQL Server中每行的元素数
| 计数|
| - ------|
| 无|
| 1个|
| 六个|
| 四个|
| 三个|
3条答案
按热度按时间ctehm74n1#
您可以使用替换技巧:
上述技巧通过计算逗号的数量来实现(假设您的数据确实使用逗号作为分隔符)。例如,您的最后一个样本数据点是:
因此,长度上的差异正确地产生了正确数量的元素。
uttx8gqw2#
您的数据
您需要
ISNULL
和len
另一种方式是如下使用
IIF
和string_split
dbfiddle
bf1o4zei3#
另一个想法是使用
STRING_SPLIT
:我知道第一眼看上去有点不方便,因为第二行中有奇怪的-1,第三行中有
COALESCE
。在您的情况下,在我的查询中导致这些困难的奇怪的事情是您的行总是以逗号开头。
这是相当奇怪的,如果每行没有第一个逗号会容易得多。
让我们假设你在未来删除这个逗号,那么这将变得非常容易和良好的可读性:
试用:db<>fiddle