Meine Ausgabe ist korrekt, aber ich möchte wissen, wie STUFF tatsächlich funktioniert.
Ich habe die einfache Abfrage, die mir die Gesamtzahl der Monate zwischen @startDate
& amp; @endDate
.
Ich speichere diese Monate in den @cols mit Hilfe von STUFF .
Abfrage ist wie folgt:
%Vor%Hier ist meine Ausgabe:
%Vor%
Stuff arbeitet mit Strings, das einzige, was es in Ihrem SQL macht, ist das erste Komma von Position 1 zu entfernen. Ohne Zeug würde es aussehen wie a, b, c, d, aber wenn Sie die Position mit einem leeren Wert füllen es verwandelt es in a, b, c, d
Ihre Frage ist wahrscheinlich mehr darüber, was FOR XML tut. In diesem Fall wird FOR XML
als "Trick" angewendet, um alle Zeilen von #tempDates
in einer langen, durch Komma getrennten Zeichenfolge zu verknüpfen, a, b, c, d und stuff entfernt gerade das erste Komma.
Für xml wird eine Zeichenkette x = ', a' + ', b' + ', c' + ', d' erzeugt, damit x als ', a, b, c, d'
endet Stuff(x,1,1,'')
ersetzt nur das Komma in Position 1 zu 1 mit '' ist also jetzt x = 'a, b, c, d'
Tags und Links sql sql-server xml sql-server-2008