ホームページ >データベース >mysql チュートリアル >SQL ServerでSQLクエリ結果を単一の文字列に連結するにはどうすればよいですか?

SQL ServerでSQLクエリ結果を単一の文字列に連結するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-27 22:09:10460ブラウズ

How to Concatenate SQL Query Results into a Single String in SQL Server?

SQL クエリ結果を単一の文字列に連結する

SQL Server では、複数のクエリ結果を 1 つの文字列に結合するタスクを実行できます。さまざまなテクニックを使用します。

FOR XML PATH およびSTUFF

SQL Server 2005 以降の場合、FOR XML PATH と STUFF の組み合わせは簡単なアプローチを提供します。

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STUFF( (SELECT ',' + CodeName 
                             FROM dbo.AccountCodes 
                             ORDER BY Sort
                             FOR XML PATH('')), 
                            1, 1, '')

このメソッドは、クエリ結果を単一の XML 文字列に連結し、次に、STUFF を使用して先頭の「,」文字を削除します。

XML ベース連結

もう 1 つのオプションは、XML 連結機能を活用することです。

DECLARE @CodeNameString varchar(100)

SET @CodeNameString = (SELECT CodeName FROM dbo.AccountCodes FOR XML PATH(''))

カーソルベースのアプローチ

XML 連結が使用される場合実現不可能ですが、カーソルベースのアプローチは可能です採用:

DECLARE @CodeNameString varchar(100)
DECLARE @CodeName varchar(50)

DECLARE cursor CURSOR FOR
SELECT CodeName
FROM dbo.AccountCodes
ORDER BY Sort

OPEN CURSOR
FETCH NEXT FROM CURSOR INTO @CodeName
WHILE @@FETCH_STATUS = 0
BEGIN
   SET @CodeNameString = @CodeNameString + @CodeName + ','
   FETCH NEXT FROM CURSOR INTO @CodeName
END

CLOSE CURSOR
DEALLOCATE CURSOR

このメソッドはクエリ結果を反復処理し、結果を @CodeNameString 変数に追加します。

推奨されるアプローチ

推奨されるアプローチこのアプローチは、SQL Server のバージョンと特定のデータ特性によって異なります。データに「<」、「>」などの特殊文字が含まれる場合または '&' を使用する場合は、FOR XML PATH および STUFF 手法の使用を検討してください。一方、大規模なデータセットまたはパフォーマンス重視のシナリオの場合は、カーソルベースのアプローチの方が適切な場合があります。

以上がSQL ServerでSQLクエリ結果を単一の文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。