Fungsi Pelayan SQL: Menggabungkan Berbilang Baris SQL ke dalam Medan Terhad Tunggal
Menggabungkan berbilang baris dengan cekap daripada subkueri ke dalam medan tunggal yang dibatasi dalam SQL Server memerlukan pendekatan yang mantap. Artikel ini membentangkan dua teknik yang berkesan, sesuai untuk versi SQL Server yang berbeza.
UNTUK LALUAN XML (SQL Server 2005 dan lebih baru):
Kaedah ini, serasi dengan SQL Server 2005 dan versi berikutnya, memanfaatkan perintah FOR XML PATH
untuk penggabungan rentetan. Berikut ialah contoh:
<code class="language-sql">SELECT [VehicleID], [Name], (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')) AS Locations FROM [Vehicle]</code>
Pertanyaan ini menggunakan FOR XML PATH
untuk membina rentetan nilai bandar yang dipisahkan koma untuk setiap VehicleID
. Fungsi STUFF
mengalih keluar koma di hadapan.
STRING_AGG (SQL Server 2017 dan kemudian):
Untuk SQL Server 2017 dan lebih baru, fungsi STRING_AGG
menawarkan penyelesaian yang lebih bersih dan cekap:
<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
secara langsung menggabungkan nilai City
dengan pemisah yang ditentukan (koma dan ruang dalam kes ini). Pendekatan ini biasanya lebih disukai kerana kebolehbacaan dan prestasinya yang dipertingkatkan.
Kedua-dua kaedah mengagregatkan data secara berkesan daripada berbilang baris ke dalam medan terhad tunggal, memudahkan manipulasi data dalam SQL Server. Pilih kaedah yang paling sesuai dengan versi SQL Server anda untuk hasil yang optimum.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris SQL ke dalam Medan Terhad Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!