下面的代码不起作用,为什么有任何想法?
declare @Counter int
set @Counter = 0
declare @ConcText nvarchar(1000)
while @Counter < 5
begin
--set @ConcText = @ConcText + cast(@Counter as nvarchar(10)) + N' counter,'
--set @ConcText = @ConcText + convert(nvarchar(10), @Counter) + N' counter,'
set @ConcText = @ConcText + N' counter,'
set @Counter = @Counter + 1
end
print @ConcText --<-- this is null, why ??
最佳答案
参见MSDN: + (String Concatenation) (Transact-SQL):
就像算术运算那样
在以下情况下对空值执行
将空值添加到已知值
结果通常是未知的
值,字符串连接
用
null值也应产生null
结果。
因此,为了使事情正常进行,在声明后立即初始化varchar变量是一个好习惯:
DECLARE @ConcText NVARCHAR(1000)
SET @ConcText = ''
处理NULL concat问题的其他方法(如果您不知道value是否为NULL)-ISNULL或COALESCE:
SET @ConcText = ISNULL(@ConcText, '') + N' counter,'
SET @ConcText = COALESCE(@ConcText, '') + N' counter,'
关于tsql - TSQL字符串连接在WHILE循环中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/615087/