SQL クエリ結果を単一の文字列に連結する
SQL シナリオでは、クエリ結果をまとまった文字列に統合すると有利な場合があります。これを実現するために、C# プログラマが一般的に使用するアプローチの 1 つは FOR EACH ループです。ただし、SQL は、このタスクを達成するための代替ソリューションを提供します。
効果的であることが証明されている方法の 1 つは、FOR XML PATH & STUFF の実装です。この手法は、SQL Server 2005 以降のバージョンに特に適しています。
このアプローチの構文は次のとおりです。
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 関数は「何もない」文字を使用して最初のカンマを削除し、最終的に目的の連結文字列を生成します。
特殊文字の処理
次の点に注意することが重要です。 FOR XML PATH('') アプローチでは、<、>、& などの特殊文字を処理するときに問題が発生する可能性があります。このような場合、代替解決策は、最初の議論で @KM によって提案された STRING_AGG() 関数を実装することです。
リソースに関する考慮事項
STRING_AGG() アプローチでは、FOR XML PATH & STUFF 手法と比較してより多くのリソースと処理時間が必要であることを考慮する価値があります。したがって、状況の特定の要件に基づいて適切な解決策を評価することが重要です。
以上がSQL クエリの結果を単一の文字列に効率的に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。