为什么这个TSql返回空值或空值?

Joh*_*n S 2 sql t-sql

为什么下面代码中的@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)

Mar*_*c B 8

你从未初始化@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)