Aufgabenstellung
Eine Spalte einer Tabelle beinhaltet eine Auflistung, die durch ein Zeichen getrennt ist. Im Beispiel die Spalte Gruppe.
Nr|Gruppe ------------------------------- 1 | Buerste,Besen,Feger 2 | Eier,Salz,Butter 3 | Bier,Schnaps,Wein
Es soll nun mit einer Art Split/Explode wie in PHP die Spalte aufgesplittet werden und einzelne Werte ausgegeben werden
Ansatz
Der folgende Code erstellt eine Funktion, die für eine Datenbank gilt. Kopiert man diesen Code in das SQL Server Management Studio und führt ihn mit F5 aus, erhält die ausgewählte Datenbank die Funktion Split.
Lösung
CREATE FUNCTION [dbo].[split](@String varchar(8000), @Delimiter varchar(12), @returnItem int) RETURNS varchar(8000) AS BEGIN DECLARE @id int DECLARE @idx int DECLARE @slice varchar(8000) DECLARE @returnslice varchar(8000) SET @id = 0 SET @idx = 1 SET @returnslice = null WHILE @idx!= 0 BEGIN SET @id = @id + '1' SET @idx = charindex(@Delimiter,@String) IF @idx!=0 SET @slice = left(@String,@idx - 1) ELSE SET @slice = @String IF @id = @returnItem SET @returnslice = @slice SET @String = SUBSTRING(right(@String,len(@String) - @idx), len(@Delimiter), len(@String)) IF len(@String) = 0 BREAK END RETURN @returnslice END
Aufruf mit:
SELECT dbo.split('DIES/IST/EIN/TEST','/',2)