Simulasikan fungsi Split dalam T-SQL
Memisahkan nilai yang dipisahkan koma ke dalam baris yang berasingan ialah tugas biasa dalam pengaturcaraan. Dalam T-SQL, tiada fungsi split asli, tetapi terdapat beberapa teknik untuk mencapai hasil yang serupa.
Salah satu cara ialah menggunakan pemprosesan XML. Dengan menukar rentetan dipisahkan koma kepada dokumen XML dan kemudian menggunakan XQuery untuk mengekstrak nilai, kami boleh mengisi jadual dengan nilai individu ini:
<code class="language-sql">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)</code>
Alternatifnya ialah menggunakan ungkapan jadual biasa rekursif (CTE) untuk mengulangi rentetan dan mengekstrak subrentetan:
<code class="language-sql">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</code>
Banyak cara lain untuk membelah rentetan dipisahkan koma dalam T-SQL boleh didapati dalam pautan rujukan yang disediakan dalam jawapan Stack Overflow ini: Bagaimana untuk membelah rentetan dipisahkan koma?
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Dipisahkan Koma dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!