sql - 标量函数来计算项目数?
问题描述
我有一nvarchar
列包含如下值:
item1+item2
item1+2item2
4item1+item2+2item3
我想要一个标量函数来计算项目数。
作为上面的例子,我们注意到:
- 以“+”分隔的项目
- 该项目可能首先有数字。这是项目计数。
上述示例所需的计数应如下所示:
item1+item2 2
item1+2item2 3
4item1+item2+2item3 7
解决方案
这是一个使用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