为什么下面代码中的@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
Run Code Online (Sandbox Code Playgroud)
你从未初始化@result,所以默认为sql null.SQL nulls是具有传染性的毒药,所以当你这样做时
SELECT @result = .... + @result
Run Code Online (Sandbox Code Playgroud)
你真的在做
SELECT @result = ... + null
Run Code Online (Sandbox Code Playgroud)
而且@result只是遗骸null
将值初始化为空字符串可以解决您的问题:
SET @result = ''
Run Code Online (Sandbox Code Playgroud)