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)