すべての「テキスト」行を 1 行に「連結」し、結果として 1 行を取得したいと考えています。これは可能ですか?MSSQL Server 2005 を使用しています。
3913 次
3 に答える
2
私はあなたがこのようなものを探していると信じています:
DECLARE @string nvarchar(max)
SET @string = N''
SELECT @string = @string + [Text] + N' ' FROM [YourTable]
SELECT @string
これにより、[テキスト] 列のすべての値が 1 つの変数に連結されます。その後、変数を選択して、すべての値を 1 行で取得できます。
于 2010-10-04T14:41:32.483 に答える
2
FOR XML PATH を使用します。
SELECT [Text]+' ' AS 'text()' FROM _table FOR XML PATH('')
別のオプション - 文字列連結を使用します。
DECLARE @s nvarchar(max)
SELECT @s = ISNULL(@s, '') + t + ' ' FROM _table OPTION (MAXDOP 1)
SELECT @s
後者は動作が保証されていないことに注意してください。公式には、複数行の結果セットに対する「@s = @s + ...」の動作は定義されていません。
MAXDOP 1
ここでヒントを使用して、オプティマイザが並列実行計画を作成しないようにします。これにより、確実に誤った結果が得られるためです。
于 2010-10-04T14:45:09.770 に答える
0
何かのようなもの:
DECLARE @result varchar(max)
SELECT @result = COALESCE(@result + ' ','') +[Text] FROM [Table]
SELECT @result
于 2010-10-04T14:42:19.883 に答える