-1

Coalesce will return the first non-null value among its argumentsドキュメントは言います。以下のように使用することもできます。

DECLARE @ColumnValue VARCHAR(MAX);
SELECT @ColumnValue = COALESCE(@ColumnValue+',','') + ColumnValue
FROM dbo.TableA
SELECT @ColumnValue

,私の理解によると、出力リストの一番前にa があるはずです。これは、最初に引数として少なくともコンマが渡されるためです。また、2 番目の引数に何らかの値を入力した場合。思ったより一番手前に出てきました,

誰かが私にコードを説明してください。とても感謝しています。

4

2 に答える 2

8

あなたの理解は正しくありません。

次の表現に注目してください。

SELECT @ColumnValue = COALESCE(@ColumnValue+',','') + ColumnValue
-------------------------------^XXXXXXXXXXXXXXX

の最初の引数COALESCE()は です@ColumnValue+','。これは最初は NULL なので、 に置き換えられ''ます。次にColumnValue、リストの最初の要素として来ます。

あなたはおそらく次のことを考えています:

SELECT @ColumnValue = COALESCE(@ColumnValue, '') + ',' + ColumnValue
于 2013-07-22T20:55:43.953 に答える
6

あなたが混乱しています。最初@ColumnValueNULLであるため、 の結果@ColumnValue + ','NULLであるため、 の結果はCOALESCE(@ColumnValue+',','')です''。これは、次の方法で簡単にテストできます。

DECLARE @ColumnValue VARCHAR(MAX);

SELECT COALESCE(@ColumnValue+',','')
于 2013-07-22T20:55:49.023 に答える