这可以将字符串输出123456
为:
1
2
3
4
5
6
代码:
declare @string varchar(20)
declare @index int
declare @len int
declare @char char(1)
set @string = '123456'
set @index = 1
set @len= LEN(@string)
WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@string, @index, 1)
print @char
SET @index= @index+ 1
END
但是当我尝试使用此代码在循环它们时将这些值相加(1+2+3+4+5+6 = 21),那么我没有从 SQL 中得到结果,请帮助
declare @string varchar(20)
declare @index int
declare @len int
declare @char char(1)
set @string = '123456'
set @index = 1
set @len= LEN(@string)
declare @Total int
WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@string, @index, 1)
set @Total = @Total + cast(@char as int)
SET @index= @index+ 1
END
print @Total
您需要设置
@Total
为默认值,否则它是NULL
并且NULL
+ 任何东西总是返回NULL
。更改此行为
21
我返回:至
话虽如此,尝试在大量行上执行这并不是一件好事。如果您需要像在那里使用的那样对标量值执行此操作,您可能需要考虑使用标量 udf。虽然这不会很好地扩展,所以如果你在桌子上使用它,请准备等待一段时间。