1

すべての「テキスト」行を 1 行に「連結」し、結果として 1 行を取得したいと考えています。これは可能ですか?MSSQL Server 2005 を使用しています。

クエリ

4

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