SQL String zerlegen
Hat einer ne Idee wie ich am besten 'n String zerhack? MSSQL
Hallo zusammen,
ich steh vor folgender Herausforderung. Ich hab eine Tabelle in der sich eine Spalte string befindet. Ein Wert sieht z.B. so aus:
AWUVUZ,30-0-0,PräfEG,AE-MiK
oder
AWUVUZ,PräfEG,AE-MiK,60-0-0,Z4-PU
Ich brauche jetzt aus dem String den "Zahlenwert". Also aus dem ersten '30-0-0', aus dem zweiten '60-0-0' für eine Abfrage in einer anderen Tabelle.
Hat einer eine Idee wie ich jeweils die Substring's von Komma zu Komma auslesen kann?
erstens = substring(SPALTE, 0, CHARINDEX(',', SPALTE))
gibt mir leider nur den String bis zum ersten Komma aus, keine Ahnung wie ich da ein Komma weiterspringen kann.
Das zweite wäre evtl. mit LEFT-RIGHT zu bewerkstelligen, aber die Anzahl der Kommas sind nicht festgelegt.Daher mal 5, mal 3 usw.
Für Tipps bin ich dankbar!
mfg
Antos
Hallo zusammen,
ich steh vor folgender Herausforderung. Ich hab eine Tabelle in der sich eine Spalte string befindet. Ein Wert sieht z.B. so aus:
AWUVUZ,30-0-0,PräfEG,AE-MiK
oder
AWUVUZ,PräfEG,AE-MiK,60-0-0,Z4-PU
Ich brauche jetzt aus dem String den "Zahlenwert". Also aus dem ersten '30-0-0', aus dem zweiten '60-0-0' für eine Abfrage in einer anderen Tabelle.
Hat einer eine Idee wie ich jeweils die Substring's von Komma zu Komma auslesen kann?
erstens = substring(SPALTE, 0, CHARINDEX(',', SPALTE))
gibt mir leider nur den String bis zum ersten Komma aus, keine Ahnung wie ich da ein Komma weiterspringen kann.
Das zweite wäre evtl. mit LEFT-RIGHT zu bewerkstelligen, aber die Anzahl der Kommas sind nicht festgelegt.Daher mal 5, mal 3 usw.
Für Tipps bin ich dankbar!
mfg
Antos
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 96402
Url: https://administrator.de/forum/sql-string-zerlegen-96402.html
Ausgedruckt am: 22.12.2024 um 22:12 Uhr
2 Kommentare
Neuester Kommentar
Versuch mal diese Funktion. Einfach anlegen und string übergeben
CREATE FUNCTION [dbo].[splitfunction]
(
@Position INTEGER,
@List VARCHAR(2000),
@Delimiter VARCHAR(1)
)
RETURNS VARCHAR(2000)
AS
BEGIN
DECLARE @RetVal VARCHAR(2000) SET @RetVal = ''
DECLARE @Counter INT SET @Counter = 0
DECLARE @StartPos INT
DECLARE @Length INT
DECLARE @DelimPos INT SET @DelimPos = 0
WHILE @Counter < @Position
BEGIN
SET @Counter = @Counter + 1 -- zaehler
SET @StartPos = @DelimPos + 1 -- startposition
SET @DelimPos = CHARINDEX(@Delimiter,@List,@DelimPos + 1) --nächsten Delimiter finden
IF @DelimPos = 0
BEGIN
IF @Counter = @Position SET @Length = (LEN(@List)+1)-@StartPos
ELSE SET @Length = -1
END
ELSE SET @Length = @DelimPos - @StartPos
END
-- Rückgabe des Strings
IF @Length > 0 SET @RetVal = SUBSTRING(@List,@StartPos,@Length)
RETURN @RetVal
END