Heim >Datenbank >MySQL-Tutorial >Wie können die STUFF-Funktion und die FOR XML PATH-Klausel von SQL Server zusammen verwendet werden, um Zeichenfolgen innerhalb einer Gruppe zu verketten?
SQL Server: Kombination von STUFF und FOR XML PATH für die Verkettung gruppierter Zeichenfolgen
In diesem Handbuch wird erläutert, wie Sie die STUFF
-Funktion und die FOR XML PATH
-Klausel von SQL Server zusammen verwenden, um Zeichenfolgen innerhalb einer Gruppe effizient zu verketten.
Die Komponenten verstehen:
FOR XML PATH('')
: Diese Klausel wandelt Abfrageergebnisse in ein XML-Format um. Durch die Verwendung einer leeren Zeichenfolge (''
) als PATH
-Argument wird eine durch Kommas getrennte Liste von Werten aus der angegebenen Spalte generiert, eingeschlossen in XML-Tags. Zum Beispiel:
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
Dies würde Folgendes ausgeben: ,aaa,bbb,ccc,ddd,eee
STUFF
Funktion: Die Funktion STUFF
ändert eine Zeichenfolge, indem sie einen Teil davon ersetzt. Wir verwenden es hier, um das durch FOR XML PATH('')
erzeugte führende Komma zu entfernen. Die Parameter der Funktion sind:
Daher entfernt STUFF((SELECT ',' NAME FROM temp1 FOR XML PATH('')), 1, 1, '')
das anfängliche Komma und ergibt: aaa,bbb,ccc,ddd,eee
Verknüpfen und Gruppieren: Die letzte Abfrage verbindet die verkettete Zeichenfolge mithilfe der Spalte ID
wieder mit der Originaltabelle und gruppiert die Ergebnisse, um die gewünschte Ausgabe zu erzielen:
<code class="language-sql">SELECT ID, abc = STUFF( (SELECT ',' + name FROM temp1 t1 WHERE t1.id = t2.id FOR XML PATH('')), 1, 1, '') FROM temp1 t2 GROUP BY id;</code>
Dadurch wird ein Ergebnissatz wie dieser generiert:
Id | abc |
---|---|
1 | aaa,bbb,ccc,ddd,eee |
Diese Methode bietet eine präzise und effektive Möglichkeit, Zeichenfolgen innerhalb von Gruppen in SQL Server zu verketten, sodass komplexere Techniken nicht erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie können die STUFF-Funktion und die FOR XML PATH-Klausel von SQL Server zusammen verwendet werden, um Zeichenfolgen innerhalb einer Gruppe zu verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!