Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Rentetan Dipisahkan Koma dalam T-SQL?

Bagaimana untuk Memisahkan Rentetan Dipisahkan Koma dalam T-SQL?

Mary-Kate Olsen
Lepaskan: 2025-01-23 08:47:13
asal
750 orang telah melayarinya

How to Split Comma-Separated Strings in T-SQL?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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