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

时间:2014-09-19 15:57:08

标签: sql tsql

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

3 个答案:

答案 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) = ''

这应该有效