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

Bagaimana untuk Memisahkan Rentetan Dibatasi Koma ke dalam Baris dalam T-SQL?

Susan Sarandon
Lepaskan: 2025-01-23 08:51:11
asal
506 orang telah melayarinya

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

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

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

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!

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