为什么下面代码中的@result值打印出一个空白字符串?我希望它能与之前的结果相结合。
DECLARE @size int
DECLARE @string nvarchar(10)
DECLARE @result nvarchar(10)
SELECT @string = '12345abc123'
DECLARE @count int, @total int
SELECT
@total = LEN(@string),
@count = 1
WHILE @count <= @total
BEGIN
SELECT @result = SUBSTRING(@string, @count, 1) + '-'+ @result
SELECT @count = @count + 1
PRINT @result
END
答案 0 :(得分:8)
您从未初始化@result
,因此默认为sql null
。 SQL nulls是具有传染性的毒药,所以当你这样做时
SELECT @result = .... + @result
你真的在做
SELECT @result = ... + null
和@result
只是null
将值初始化为空字符串可以解决您的问题:
SET @result = ''
答案 1 :(得分:3)
它返回一个空白,因为您将子字符串与@result连接起来,最初为NULL。
尝试将@result设置为空字符串,如下所示:
SELECT @string = '12345abc123', @result = ''
答案 2 :(得分:3)
你必须初始化@result变量
声明它就像这样
DECLARE @result nvarchar(10) = ''
这应该有效