Heim >Datenbank >MySQL-Tutorial >Wie transformiere ich durch Kommas getrennte Spaltendaten in eindeutige Zeilen in SQL?
Zeilendaten aus geteilten Spaltendaten in SQL extrahieren
Um Spaltendaten in verschiedene Zeilen aufzuteilen, können Sie eine benutzerdefinierte Funktion nutzen und anwenden über einen Outer-Join mit Ihrer vorhandenen Tabelle verbinden. Dadurch können Sie Daten wie folgt umwandeln:
Code Declaration 123 a1-2 nos, a2- 230 nos, a3 - 5nos
In das gewünschte Format:
Code Declaration 123 a1 - 2nos 123 a2 - 230nos 123 a3 - 5nos
Mithilfe einer Split-Funktion
Erstellen Sie eine Split-Funktion namens [dbo].[Split], um die Daten mithilfe eines „,“ zu trennen. Trennzeichen:
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;
Anwenden der Split-Funktion
Verwenden Sie die Split-Funktion in einer Abfrage, um die neue Tabelle mit dem Original zu verbinden:
select t1.code, s.items declaration from yourtable t1 outer apply dbo.split(t1.declaration, ',') s
Dies führt zur gewünschten Ausgabe.
Mit a CTE
Alternativ können Sie eine CTE-Version (Common Table Expression) implementieren:
;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
Das obige ist der detaillierte Inhalt vonWie transformiere ich durch Kommas getrennte Spaltendaten in eindeutige Zeilen in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!