我有一个SQL查询,应该提取一条记录并将其连接成一个字符串,然后输出该字符串。查询的重要部分如下。
DECLARE @counter int; SET @counter = 1; DECLARE @tempID varchar(50); SET @tempID = ''; DECLARE @tempCat varchar(255); SET @tempCat = ''; DECLARE @tempCatString varchar(5000); SET @tempCatString = ''; WHILE @counter <= @tempCount BEGIN SET @tempID = ( SELECT [Val] FROM #vals WHERE [ID] = @counter); SET @tempCat = (SELECT [Description] FROM [Categories] WHERE [ID] = @tempID); print @tempCat; SET @tempCatString = @tempCatString + '
' + @tempCat; SET @counter = @counter + 1; END
脚本运行时,@tempCatString
输出为null,而@tempCat
始终正确输出。是否有某些原因导致串联在While循环内不起作用?这似乎是错误的,因为增量@counter
可以完美地工作。那我还有什么想念的吗?
看起来它应该可以工作,但是出于某种原因,似乎认为@tempCatString为null,这就是为什么您总是得到null值的原因,因为null串联到其他任何值仍然为null。建议您尝试将COALESCE()
每个变量设置为“”(如果它们为空)。