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

Bagaimana untuk Memisahkan Rentetan Dibatasi Koma dalam T-SQL?

Susan Sarandon
Lepaskan: 2025-01-23 08:36:11
asal
987 orang telah melayarinya

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

Menghuraikan Rentetan Dibatasi Koma dengan Cekap dalam T-SQL

T-SQL tidak mempunyai fungsi split terbina dalam, tidak seperti banyak bahasa pengaturcaraan lain. Walau bagaimanapun, beberapa teknik berkesan mencapai pemisahan rentetan.

Pendekatan 1: Memanfaatkan Penghuraian XML

Pendekatan ini menggunakan keupayaan penghuraian sedia ada XML untuk memisahkan nilai. Kod T-SQL berikut menggambarkan ini:

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

Pendekatan 2: CTE dan CHARINDEX untuk Pemisahan Rekursif

Kaedah ini menggunakan Common Table Expression (CTE) dan fungsi CHARINDEX untuk pemisahan rentetan rekursif:

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

Penerokaan Selanjutnya

Untuk kaedah tambahan dan perbincangan yang lebih luas tentang pemisahan rentetan dipisahkan koma dalam T-SQL, rujuk sumber berguna ini:

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Dibatasi Koma dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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