Heim >Datenbank >MySQL-Tutorial >Wie kann ich durch Kommas getrennte Werte in SQL Server in Zeilen aufteilen?

Wie kann ich durch Kommas getrennte Werte in SQL Server in Zeilen aufteilen?

DDD
DDDOriginal
2025-01-05 08:24:43160Durchsuche

How Can I Split Comma-Separated Values into Rows in SQL Server?

Durch Kommas getrennte Werte in Zeilen aufteilen

In SQL Server kann eine durch Kommas getrennte Zeichenfolge, die in einer Tabellenspalte gespeichert ist, in mehrere Zeilen konvertiert werden kann mithilfe einer Kombination aus XML- und String-Manipulationstechniken erreicht werden. Das Ziel besteht darin, eine Tabelle, die eine einzelne Zeile mit einer durch Kommas getrennten Zeichenfolge enthält, in eine Tabelle mit mehreren Zeilen umzuwandeln, von denen jede einen eindeutigen Wert aus der ursprünglichen Zeichenfolge enthält.

Um dies zu erreichen, führen Sie die folgenden Schritte aus:

  1. Konvertieren Sie die Zeichenfolge in ein XML-Fragment: Verpacken Sie die durch Kommas getrennte Zeichenfolge mit XML-Tags, um sie in ein XML-Fragment umzuwandeln. Dieser Vorgang fügt jedem Wert öffnende und schließende Tags hinzu und erstellt so eine hierarchische XML-Struktur.
  2. Verwenden Sie CROSS APPLY, um das XML-Fragment aufzuteilen: Verwenden Sie den CROSS APPLY-Operator, um das XML-Fragment in einzelne aufzuteilen Knoten. Jeder Knoten stellt einen einzelnen Wert in der ursprünglichen Zeichenfolge dar.
  3. Extrahieren Sie den Wert aus dem Knoten:Wenden Sie die VALUE()-Methode auf jeden Knoten an, um den tatsächlichen Wert als Zeichenfolge zu extrahieren. Dadurch wird der XML-Knoten wieder in einen verwendbaren Datentyp konvertiert.
  4. Kombinieren Sie die ID und die extrahierten Werte: Verknüpfen Sie die extrahierten Werte mit der ID-Spalte der Originaltabelle, um die neue Tabelle zu erstellen. Dadurch wird sichergestellt, dass jeder Wert mit der entsprechenden Zeile in der Originaltabelle verknüpft ist.

Hier ist eine Beispielabfrage, die diesen Prozess veranschaulicht:

SELECT A.[id],
       Split.a.value('.', 'VARCHAR(100)') AS String
FROM (SELECT [id],
             CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String
         FROM TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a);

Diese Abfrage erzeugt die gewünschte Ausgabe , wobei jede Zeile in der Originaltabelle in mehrere Zeilen erweitert wird, die jeweils einen einzelnen Wert aus der durch Kommas getrennten Zeichenfolge enthalten.

Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Werte in SQL Server in Zeilen aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn