Heim >Datenbank >MySQL-Tutorial >Wie extrahiere ich Zeilen aus durch Kommas getrennten Spaltenwerten in SQL?

Wie extrahiere ich Zeilen aus durch Kommas getrennten Spaltenwerten in SQL?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 03:39:39718Durchsuche

How to Extract Rows from Comma-Separated Column Values in SQL?

Zeilen aus durch Kommas getrennten Spaltenwerten extrahieren

Problem:

Gegeben sei eine Tabelle, die eine durch Kommas getrennte Spalte enthält Das Ziel besteht darin, jeden Wert in einen separaten Wert umzuwandeln Zeilen.

Abfrage:

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

Erklärung:

  1. Die innere Abfrage erstellt eine neue Spalte mit dem Namen Zeichenfolge, die die ursprünglichen durch Kommas getrennten Werte in XML-Tags einschließt. Dies wird mithilfe der CAST- und REPLACE-Funktionen erreicht, um die Werte in eine wohlgeformte XML-Zeichenfolge umzuwandeln.
  2. Die äußere Abfrage führt eine Kreuzanwendung durch, um die XML-Zeichenfolge mithilfe der Knotenfunktion in Knoten zu analysieren. Jeder Knoten stellt einen einzelnen durch Kommas getrennten Wert dar.
  3. Der a.value('.','VARCHAR(100)')-Ausdruck extrahiert den Wert eines Knotens als VARCHAR(100)-Datentyp. Dadurch erhalten wir die einzelnen verarbeiteten Zeilen.

Referenz:

  • [Konvertieren einzelner durch Kommas getrennter Zeilenwerte in mehrere Zeilen mithilfe von SQL XML](http://www.sqljason.com/2010/05/converting-single-comma-separated-row.html)

Das obige ist der detaillierte Inhalt vonWie extrahiere ich Zeilen aus durch Kommas getrennten Spaltenwerten in SQL?. 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