2012-06-29 94 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 (''))