Jus*_*inT 1 sql sql-server string-concatenation while-loop
我有一个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 + '<br/>' + @tempCat;
SET @counter = @counter + 1;
END
Run Code Online (Sandbox Code Playgroud)
脚本运行时,@tempCatString输出为null,而@tempCat始终正确输出。是否有某些原因导致串联在While循环内不起作用?这似乎是错误的,因为增量@counter可以完美地工作。那我还有什么想念的吗?
这样效率会更高......
select @tempCatString = @tempCatString + Coalesce(Description,'') + '<br/>' from Categories...
select @fn
Run Code Online (Sandbox Code Playgroud)
还可以将 concat_null_yields_null 作为解决串联问题的选项,尽管我会避免该路线
看起来它应该可以工作,但是出于某种原因,似乎认为@tempCatString为null,这就是为什么您总是得到null值的原因,因为null串联到其他任何值仍然为null。建议您尝试将COALESCE()每个变量设置为“”(如果它们为空)。
| 归档时间: |
|
| 查看次数: |
20123 次 |
| 最近记录: |