2016-08-24 4 views
-4

Wie kann ich eine Zeichenfolge in mehrere Zeilen aufteilen, aber ohne eine Eingabetabelle, nur eine Zeichenfolge?Eine Zeichenfolge in mehrere Zeilen aufteilen

Beispiel wird die Zeichenkette 'abc, GRT, asd, eee, 78s'

Die Ausgabe wie folgt sein sollte:

abc

GRT

asd

eee

78s

Ich sehe hier viele Lösungen, aber alle mit einer Tabelle, in der die eine oder mehrere Eingabezeichenfolgen gespeichert sind.

Wie kann ich dies erreichen, ohne einen Tisch zu benutzen?

Danke

+0

Das klingt wie Sie kämpfen, weil Ihre Daten nicht ordnungsgemäß normalisiert wurden. – Phylogenesis

+0

Für welche Art und Version von Datenbank ist das gedacht? – LukStorms

Antwort

0

Erstellen Sie die folgende Funktion.

CREATE FUNCTION SplitString 
( 
    @Input NVARCHAR(MAX), 
    @Character CHAR(1) 
) 
RETURNS @Output TABLE (
    Item NVARCHAR(1000) 
) 
AS 
BEGIN 
    DECLARE @StartIndex INT, @EndIndex INT 

    SET @StartIndex = 1 
    IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character 
    BEGIN 
     SET @Input = @Input + @Character 
    END 

    WHILE CHARINDEX(@Character, @Input) > 0 
    BEGIN 
     SET @EndIndex = CHARINDEX(@Character, @Input) 

     INSERT INTO @Output(Item) 
     SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1) 

     SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) 
    END 

    RETURN 
    END 
    GO 

Mit der folgenden Abfrage können Sie Ihre Zeichenfolge teilen.

SELECT Item 
FROM dbo.SplitString('abc,grt,asd,888,78s', ',') 
Verwandte Themen