首页 > 解决方案 > 标量函数来计算项目数?

问题描述

我有一nvarchar列包含如下值:

item1+item2
item1+2item2
4item1+item2+2item3

我想要一个标量函数来计算项目数。

作为上面的例子,我们注意到:

上述示例所需的计数应如下所示:

item1+item2           2
item1+2item2          3
4item1+item2+2item3   7

标签: sqlsql-server

解决方案


这是一个使用try_convert()和的选项string_split()

这个假设是个位数的领先。

例子

Declare @YourTable Table ([SomeCol] varchar(50))  Insert Into @YourTable Values 
 ('item1+item2')
,('item1+2item2')
,('4item1+item2+2item3')

Select * 
 From  @YourTable A
 Cross Apply (
                Select value = sum(isnull(try_convert(int,left(value,1)),1)) 
                  From string_split(SomeCol,'+') 
             ) B

退货

SomeCol              value
item1+item2          2
item1+2item2         3
4item1+item2+2item3  7

推荐阅读