ホームページ >データベース >mysql チュートリアル >SQL クエリの結果を単一の文字列に効率的に連結するにはどうすればよいですか?
SQL クエリ結果を単一の文字列に蓄積する
クエリ結果を単一の文字列に連結することは、データベース プログラミングの一般的なタスクです。 SQL Server では、これを実現する 2 つのアプローチがあります。FOR XML PATH & STUFF 手法を使用するか、STRING_AGG 関数を利用します。
FOR XML PATH & STUFF
For 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, '')
このソリューションは、FOR XML PATH('') を使用して結果を XML 文字列に連結し、STUFF を使用して XML 連結から継承された最初のカンマを削除します。
STRING_AGG 関数
SQL Server 2017 以降では、 STRING_AGG 関数は、このタスクに専用のソリューションを提供します。
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STRING_AGG(CodeName, ',') FROM dbo.AccountCodes ORDER BY Sort
STRING_AGG 関数は、指定された区切り文字 (この場合は「,」) で区切られた結果を 1 つの文字列に直接連結します。
特殊文字の処理
FOR はXML PATH & STUFF アプローチでは、「<」、「>」、「&」などの特定の特殊文字を XML エンティティ (<、>、&) にエンコードする場合があります。これらの文字に問題がある場合は、USING XMLTYPE 句を指定した STRING_AGG 関数を使用できます。
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STRING_AGG(CodeName, ',') USING XMLTYPE FROM dbo.AccountCodes ORDER BY Sort
以上がSQL クエリの結果を単一の文字列に効率的に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。