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, '')
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
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
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!