Myk*_*l73 1 sql-server t-sql sql-server-2012
我正在遍历一个表,试图创建一个动态的 sql 查询。它似乎工作正常,除非我连接结果以制作实际语句。伪代码如下
WHILE (Data is in the table)
BEGIN
SELECT TOP 1 @result = result from table
@sql = @sql + ', ' + @result
END
Run Code Online (Sandbox Code Playgroud)
如果我查看@sql
每个循环,我会看到预期的结果,但是当循环完成时@sql
是空的。有人可以解释为什么吗?
假设你的伪代码是你的实际代码正在做什么的一个很好的近似,你需要类似的东西:
DECLARE @sql NVARCHAR(MAX);
SET @sql = '';
WHILE (Data is in the table)
BEGIN
SELECT TOP 1 @result = result from table;
@sql = @sql + ', ' + @result;
END
Run Code Online (Sandbox Code Playgroud)
如果@sql
在循环之前没有初始化为零长度的字符串,SQL Server 将尝试附加@result
到一个 NULL 字符串,这将导致一个 NULL 字符串,因此@sql
在循环的末尾将显示为空。
归档时间: |
|
查看次数: |
1761 次 |
最近记录: |