2012-06-29 70 views
0

我声明varchar变量TSQLTSQL追加行到一个变量

declare @var varchar(max); 

我有一个返回多个值的选择查询。如:

Select name from table where ... 

我想追加每行到这个变量。例如我的查询返回:

name 
---------- 
Joe 
Jack 
William 
Avarel 

我希望我的@var是这样的:JoeJackWilliamAvarel

我该怎么办呢?我写这篇文章的查询,但它给我的错误:

Set @var = (Select name from table where ...) 

和错误是:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

谢谢

回答

6
SELECT 
    @var = @var + name 
FROM 
    table 
WHERE 
    ... 
ORDER BY 
    ... 

但要确保@var确实启动作为NULL。 @set @var = ''

+0

其实它是如此简单,我怎么可以不考虑它,谢谢:) – Mehmet

2

您可以使用COALESCE

DECLARE @var VARCHAR(MAX); 
SELECT @var = COALESCE(@var+ ' ', '') + name 
FROM table 
WHERE .... 
ORDER BY name 
+0

我觉得ISNULL()在这里已经足够。 –

+0

谢谢,我注意到这个以备将来使用 – Mehmet

2

下面的查询可以作为子查询或单独使用。

SET @var = (SELECT name + ' ' 
      FROM mytable 
      Where ... 
      FOR xml path (''))