Heim > Datenbank > MySQL-Tutorial > Wie transformiere ich durch Kommas getrennte Spaltendaten in eindeutige Zeilen in SQL?

Wie transformiere ich durch Kommas getrennte Spaltendaten in eindeutige Zeilen in SQL?

Patricia Arquette
Freigeben: 2025-01-05 10:31:49
Original
650 Leute haben es durchsucht

How to Transform Comma-Separated Column Data into Distinct Rows 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
Nach dem Login kopieren

In das gewünschte Format:

Code  Declaration 
123   a1 - 2nos 
123   a2 - 230nos 
123   a3 - 5nos
Nach dem Login kopieren

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;
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage