Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Nilai Terhad dalam Lajur SQL kepada Berbilang Baris?
Memisahkan Nilai Terhad dalam Lajur SQL kepada Berbilang Baris
Dalam situasi di mana lajur SQL mengandungi data terhad, mungkin perlu mengekstrak dan formatkan nilai ke dalam berbilang baris. Tugas ini menjadi sangat mencabar apabila berurusan dengan volum data yang besar atau rentetan terhad yang sangat panjang.
Pertimbangkan contoh berikut:
Jadual Sumber
message-id | recipient-address |
---|---|
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected];[email protected];[email protected] |
Output yang Diingini
message-id | recipient-address |
---|---|
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected] |
Untuk SQL Server versi 2016 dan ke atas, fungsi STRING_SPLIT menyediakan penyelesaian yang mudah:
SELECT s.[message-id], f.value FROM dbo.SourceData AS s CROSS APPLY STRING_SPLIT(s.[recipient-address], ';') AS f;
Sebelum SQL Server 2016, fungsi pemisahan tersuai boleh dibuat:
CREATE FUNCTION dbo.SplitStrings ( @List NVARCHAR(MAX), @Delimiter NVARCHAR(255) ) RETURNS TABLE AS RETURN (SELECT Number = ROW_NUMBER() OVER (ORDER BY Number), Item FROM (SELECT Number, Item = LTRIM(RTRIM(SUBSTRING(@List, Number, CHARINDEX(@Delimiter, @List + @Delimiter, Number) - Number))) FROM (SELECT ROW_NUMBER() OVER (ORDER BY s1.[object_id]) FROM sys.all_objects AS s1 CROSS APPLY sys.all_objects) AS n(Number) WHERE Number <= CONVERT(INT, LEN(@List)) AND SUBSTRING(@Delimiter + @List, Number, 1) = @Delimiter ) AS y); GO
Dengan pemisahan berfungsi di tempatnya, data boleh diekstrak dan diformatkan:
SELECT s.[message-id], f.Item FROM dbo.SourceData AS s CROSS APPLY dbo.SplitStrings(s.[recipient-address], ';') AS f;
Dengan memanfaatkan teknik ini, adalah mungkin untuk memisahkan nilai yang dibataskan dengan cekap kepada berbilang baris, memudahkan pemformatan data dan tugasan analisis.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Nilai Terhad dalam Lajur SQL kepada Berbilang Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!