0

varchar在 T-SQL 中声明一个变量

declare @var varchar(max);

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

Select name from table where ...

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

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

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

我该怎么做?我正在写这个查询,但它给了我错误:

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

错误是:

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

谢谢

4

3 回答 3

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

但请确保 @var 不NULL 开头。 @set @var = ''.

于 2012-06-29T12:05:35.273 回答
2

您可以使用COALESCE

DECLARE @var VARCHAR(MAX);
SELECT @var = COALESCE(@var+ ' ', '') +  name
FROM  table
WHERE ....
ORDER BY name
于 2012-06-29T12:08:48.460 回答
2

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

SET @var = (SELECT name + ' ' 
            FROM   mytable 
            Where ...
            FOR xml path ('')) 
于 2012-06-29T12:14:57.103 回答