Heim > Datenbank > MySQL-Tutorial > Wie teile ich die Daten einer Spalte mithilfe von SQL in mehrere Zeilen auf?

Wie teile ich die Daten einer Spalte mithilfe von SQL in mehrere Zeilen auf?

Patricia Arquette
Freigeben: 2025-01-05 04:19:39
Original
702 Leute haben es durchsucht

How to Split a Column's Data into Multiple Rows Using SQL?

SQL-Abfrage zum Aufteilen von Spaltendaten in Zeilen

Um Spaltendaten in Zeilen zu unterteilen, besteht ein gängiger Ansatz darin, eine Aufteilungsfunktion zu erstellen. Hier ist eine Beispielfunktion für diesen Zweck:

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

Um diese Funktion in einer Abfrage zu verwenden, verwenden Sie eine äußere Anwendung, um die vorhandene Tabelle zu verknüpfen:

select t1.code, s.items declaration
from yourtable t1
outer apply dbo.split(t1.declaration, ',') s
Nach dem Login kopieren

Dies führt zum gewünschten Ergebnis , Spaltendaten in Zeilen aufteilen:

| CODE |  DECLARATION |
-----------------------
|  123 |     a1-2 nos |
|  123 |  a2- 230 nos |
|  123 |    a3 - 5nos |
Nach dem Login kopieren

Alternativ kann eine CTE-Version implementiert werden als folgt:

;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 teile ich die Daten einer Spalte mithilfe von SQL in mehrere Zeilen auf?. 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