Teknik pemisahan rentetan dalam T-SQL
Memisahkan rentetan yang dipisahkan koma kepada berbilang baris ialah tugas biasa dalam SQL. T-SQL (pelaksanaan SQL Microsoft) menyediakan beberapa cara untuk mencapai matlamat ini.
Gunakan XML
Salah satu cara ialah menukar rentetan kepada XML. Struktur XML membolehkan pengekstrakan nilai individu dengan mudah sebagai nod XML:
DECLARE @xml xml, @str varchar(100), @delimiter varchar(10) SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15' SET @delimiter = ',' SET @xml = cast(('<X>'+replace(@str, @delimiter, '</X><X>')+'</X>') as xml) SELECT C.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as X(C)
Gunakan CTE (Ungkapan Jadual Biasa)
Alternatifnya ialah menggunakan CTE untuk mencipta satu siri baris yang mewakili aksara rentetan:
DECLARE @str varchar(100), @delimiter varchar(10) SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15' SET @delimiter = ',' ;WITH cte AS ( SELECT 0 a, 1 b UNION ALL SELECT b, CHARINDEX(@delimiter, @str, b) + LEN(@delimiter) FROM CTE WHERE b > a ) SELECT SUBSTRING(@str, a, CASE WHEN b > LEN(@delimiter) THEN b - a - LEN(@delimiter) ELSE LEN(@str) - a + 1 END) value FROM cte WHERE a > 0
Kaedah lain
Cara lain untuk memisahkan rentetan dalam T-SQL termasuk menggunakan fungsi CHARINDEX() dan fungsi REGEX_SPLIT_TO_TABLE() (diperkenalkan dalam SQL Server 2016). Untuk lebih banyak contoh dan perbincangan, lihat artikel berkaitan seperti "Bagaimana untuk memisahkan rentetan yang dipisahkan koma?"
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Dibatasi Koma ke dalam Baris dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!