Heim >Datenbank >MySQL-Tutorial >Wie teilt man getrennte Werte in einer SQL-Spalte effizient in mehrere Zeilen auf?
Begrenzte Werte in einer SQL-Spalte in mehrere Zeilen aufteilen
Beim Umgang mit Tabellen, die begrenzte Werte in einer einzelnen Spalte enthalten, z. B. einem Empfänger -Adressfeld durch Semikolon (;) getrennt, müssen diese Werte zur weiteren Verarbeitung oder Analyse in mehrere Zeilen aufgeteilt werden. In diesem Artikel werden verschiedene Methoden untersucht, um dies mithilfe von SQL zu erreichen, wobei der Schwerpunkt insbesondere auf der Optimierung von Leistung und Effizienz liegt.
Verwenden der STRING_SPLIT-Funktion für SQL Server 2016
Wenn Sie SQL Server verwenden 2016 oder höher können Sie die Funktion STRING_SPLIT nutzen, um getrennte Werte effizient aufzuteilen. Die Syntax für diese Funktion lautet wie folgt:
STRING_SPLIT(@list, @delimiter)
So können Sie STRING_SPLIT verwenden, um Empfängeradressen in separate Zeilen zu extrahieren:
SELECT [message-id], value FROM dbo.SourceData CROSS APPLY STRING_SPLIT([recipient-address], ';') AS f;
Erstellen einer Split-Funktion für Pre -SQL Server 2016-Versionen
Für SQL Server-Versionen vor 2016 ist dies möglich Erstellen Sie eine benutzerdefinierte Teilungsfunktion. Ein Beispiel für eine solche Funktion ist:
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
Sie können diese Funktion dann verwenden, um begrenzte Werte wie folgt aufzuteilen:
SELECT [message-id], f.Item FROM dbo.SourceData CROSS APPLY dbo.SplitStrings([recipient-address], ';') AS f;
Optimierung und Überlegungen
Um eine optimale Leistung zu gewährleisten, beachten Sie die folgenden Tipps:
Das obige ist der detaillierte Inhalt vonWie teilt man getrennte Werte in einer SQL-Spalte effizient in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!