0

varcharT-SQL で変数を宣言しています

declare @var varchar(max);

複数の値を返す選択クエリがあります。そのような:

Select name from table where ...

この変数に各行を追加したいと思います。たとえば、私のクエリは次を返します。

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

私は@varこれになりたい:JoeJackWilliamAvarel

どうすればいいですか?私はこのクエリを書いていますが、エラーが発生します:

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

エラーは次のとおりです。

サブクエリが複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後にある場合、またはサブクエリが式として使用されている場合、これは許可されません。

ありがとうございました

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 に答える