Mengekstrak Data Baris daripada Data Lajur Pisah dalam SQL
Untuk memisahkan data lajur kepada baris yang berbeza, anda boleh memanfaatkan fungsi tersuai dan menggunakannya ke jadual sedia ada anda menggunakan sambung luar. Ini membolehkan anda mengubah data seperti ini:
Code Declaration 123 a1-2 nos, a2- 230 nos, a3 - 5nos
Ke dalam format yang diingini:
Code Declaration 123 a1 - 2nos 123 a2 - 230nos 123 a3 - 5nos
Menggunakan Fungsi Split
Buat fungsi split dipanggil [dbo].[Split] untuk memisahkan data menggunakan ',' pembatas:
create FUNCTION [dbo].[Split](@String varchar(MAX), @Delimiter char(1)) returns @temptable TABLE (items varchar(MAX)) as begin declare @idx int declare @slice varchar(8000) select @idx = 1 if len(@String)<1 or @String is null return while @idx!= 0 begin set @idx = charindex(@Delimiter,@String) if @idx!=0 set @slice = left(@String,@idx - 1) else set @slice = @String if(len(@slice)>0) insert into @temptable(Items) values(@slice) set @String = right(@String,len(@String) - @idx) if len(@String) = 0 break end return end;
Menggunakan Fungsi Split
Gunakan fungsi pisah dalam pertanyaan untuk menyertai jadual baharu kepada yang asal:
select t1.code, s.items declaration from yourtable t1 outer apply dbo.split(t1.declaration, ',') s
Ini akan menghasilkan output yang diingini.
Menggunakan CTE
Sebagai alternatif, anda boleh melaksanakan versi CTE (Common Table Expression):
;with cte (code, DeclarationItem, Declaration) as ( select Code, cast(left(Declaration, charindex(',',Declaration+',')-1) as varchar(50)) DeclarationItem, stuff(Declaration, 1, charindex(',',Declaration+','), '') Declaration from yourtable union all select code, cast(left(Declaration, charindex(',',Declaration+',')-1) as varchar(50)) DeclarationItem, stuff(Declaration, 1, charindex(',',Declaration+','), '') Declaration from cte where Declaration > '' ) select code, DeclarationItem from cte
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Lajur Dipisahkan Koma ke Baris Berbeza dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!