ホームページ >データベース >mysql チュートリアル >SQL Server で複数のサブクエリ行を 1 つの区切り文字で区切られたフィールドに連結するにはどうすればよいですか?
SQL Server でサブクエリ結果を単一の区切られたフィールドに効率的に結合する
SQL Server では、サブクエリの複数の行を区切り文字を使用して 1 つのフィールドに連結する方法がいくつか提供されています。 サーバー側カーソルはオプションですが、多くの場合効率が低くなります。 この記事では、より効果的なテクニックについて説明します。
XML PATH の場合: 古い SQL Server バージョン (2005 以前) のソリューション
SQL Server 2005 以前のバージョンの場合、FOR XML PATH
コマンドは簡潔な解決策を提供します。
<code class="language-sql">SELECT [VehicleID] , [Name] , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH ('')), 1, 2, '')) AS Locations FROM [Vehicle]</code>
これは、XML パス生成を巧みに使用して City
値を連結し、STUFF
によって最初のカンマが削除されます。
STRING_AGG: SQL Server 2017 以降の推奨メソッド
SQL Server 2017 以降のバージョンでは、大幅に改善された機能 STRING_AGG
が導入されています。
<code class="language-sql">SELECT [VehicleID] ,[Name] ,(SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V</code>
STRING_AGG
はパフォーマンスが向上し、カスタム区切り文字を使用できるため、最新の SQL Server 展開に推奨されるアプローチです。
概要
これらのメソッドは、SQL Server 内で複数のサブクエリ行を単一の区切り文字列に統合する効率的な方法を提供し、データ操作タスクを合理化します。 適切な方法の選択は、SQL Server のバージョンによって異なります。 STRING_AGG
は、パフォーマンスと柔軟性が強化されているため、新しいバージョンで推奨される選択肢です。
以上がSQL Server で複数のサブクエリ行を 1 つの区切り文字で区切られたフィールドに連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。