2012-06-29 10 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

После запроса может быть использован в качестве Sub Query или использовать по отдельности.

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