为什么这个TSql返回一个空白或空值?
为什么下面代码中的@result值打印出一个空白字符串?我希望它与前面的结果连接起来为什么这个TSql返回一个空白或空值?,sql,tsql,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 <=
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
DECLARE@size int
声明@string nvarchar(10)
声明@result nvarchar(10)
选择@string='12345abc123'
声明@count int,@total int
挑选
@总计=长度(@string),
@计数=1
虽然@count您从未初始化过@result
,因此它默认为sqlnull
。SQL空值是会传染的毒药,所以当您这样做时
SELECT @result = .... + @result
你真的在做什么
SELECT @result = ... + null
而@result
只是保持null
将值初始化为空字符串可以解决您的问题:
SET @result = ''
它返回一个空白,因为您正在将子字符串与@result连接起来,后者最初为NULL
尝试将@result设置为空字符串,如下所示:
SELECT @string = '12345abc123', @result = ''
您必须初始化@result变量
像这样申报
DECLARE @result nvarchar(10) = ''
这应该行得通