Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Hasil Pertanyaan SQL dengan Cekap ke dalam Rentetan Tunggal?

Bagaimana untuk Menggabungkan Hasil Pertanyaan SQL dengan Cekap ke dalam Rentetan Tunggal?

Mary-Kate Olsen
Lepaskan: 2025-01-03 09:42:43
asal
230 orang telah melayarinya

How to Efficiently Concatenate SQL Query Results into a Single String?

Mengumpul Hasil Pertanyaan SQL ke dalam Rentetan Tunggal

Menggabungkan hasil pertanyaan ke dalam rentetan tunggal ialah tugas biasa dalam pengaturcaraan pangkalan data. Dalam SQL Server, terdapat dua pendekatan untuk mencapai ini: menggunakan teknik FOR XML PATH & STUFF atau memanfaatkan fungsi STRING_AGG.

FOR XML PATH & STUFF

Untuk SQL Server versi 2005 dan ke atas, gabungan FOR XML PATH & STUFF adalah berkesan pendekatan:

DECLARE @CodeNameString varchar(100)

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

Penyelesaian ini menggabungkan hasil menggunakan FOR XML PATH('') ke dalam rentetan XML, kemudian menggunakan STUFF untuk mengalih keluar koma awal yang diwarisi daripada penggabungan XML.

Fungsi STRING_AGG

Dalam SQL Server 2017 dan kemudian, Fungsi STRING_AGG menyediakan penyelesaian khusus untuk tugasan ini:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STRING_AGG(CodeName, ',')
FROM 
   dbo.AccountCodes
ORDER BY 
   Sort
Salin selepas log masuk

Fungsi STRING_AGG menggabungkan hasil terus ke dalam rentetan tunggal, dipisahkan oleh pembatas yang ditentukan (dalam kes ini, ',').

Mengendalikan Watak Istimewa

Adalah penting untuk ambil perhatian bahawa FOR XML PATH & Pendekatan STUFF mungkin mengekod aksara khas tertentu, seperti '<', '>' dan '&', ke dalam entiti XML (<, >, dan &). Untuk situasi di mana aksara ini bermasalah, fungsi STRING_AGG dengan klausa USING XMLTYPE boleh digunakan:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STRING_AGG(CodeName, ',') USING XMLTYPE
FROM 
   dbo.AccountCodes
ORDER BY 
   Sort
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Hasil Pertanyaan SQL dengan Cekap ke dalam Rentetan Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan