Durch Trennzeichen getrennte Werte in einer SQL-Spalte in mehrere Zeilen aufteilen
In Situationen, in denen eine SQL-Spalte durch Trennzeichen getrennte Daten enthält, kann eine Extraktion erforderlich sein und formatieren Sie die Werte in mehrere Zeilen. Diese Aufgabe stellt eine besondere Herausforderung dar, wenn es um große Datenmengen oder extrem lange, durch Trennzeichen getrennte Zeichenfolgen geht.
Betrachten Sie das folgende Beispiel:
Quelltabelle
message-id | recipient-address |
---|---|
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected];[email protected];[email protected] |
Gewünschte Ausgabe
message-id | recipient-address |
---|---|
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected] |
Für SQL Server-Versionen 2016 und höher bietet die Funktion STRING_SPLIT eine unkomplizierte Lösung:
SELECT s.[message-id], f.value FROM dbo.SourceData AS s CROSS APPLY STRING_SPLIT(s.[recipient-address], ';') AS f;
Vor SQL Server 2016 kann eine benutzerdefinierte Teilungsfunktion erstellt werden:
CREATE FUNCTION dbo.SplitStrings ( @List NVARCHAR(MAX), @Delimiter NVARCHAR(255) ) RETURNS TABLE AS RETURN (SELECT Number = ROW_NUMBER() OVER (ORDER BY Number), Item FROM (SELECT Number, Item = LTRIM(RTRIM(SUBSTRING(@List, Number, CHARINDEX(@Delimiter, @List + @Delimiter, Number) - Number))) FROM (SELECT ROW_NUMBER() OVER (ORDER BY s1.[object_id]) FROM sys.all_objects AS s1 CROSS APPLY sys.all_objects) AS n(Number) WHERE Number <= CONVERT(INT, LEN(@List)) AND SUBSTRING(@Delimiter + @List, Number, 1) = @Delimiter ) AS y); GO
Wenn die Teilungsfunktion vorhanden ist , können die Daten extrahiert und formatiert werden:
SELECT s.[message-id], f.Item FROM dbo.SourceData AS s CROSS APPLY dbo.SplitStrings(s.[recipient-address], ';') AS f;
Durch die Nutzung dieser Techniken ist es möglich, durch Trennzeichen effizient aufzuteilen Werte in mehrere Zeilen aufteilen und so Datenformatierungs- und Analyseaufgaben vereinfachen.
Das obige ist der detaillierte Inhalt vonWie teile ich getrennte Werte in einer SQL-Spalte in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!