2017-09-25 1 views
0

ich den folgenden Code haben, die gut funktioniert:Tsql für XML-String concat - So funktioniert es

STUFF( ( 
         select 
          char(13)+'Item '+i.item+' : '--+char(13) +i.item_descr 
         from @itemlines i 
         where i.customer=main.customer 
         FOR XML PATH(''), TYPE 
        ).value('.','varchar(max)') 
       ,1,1, '') 

Was ist der .value() Sache? So etwas wie eine ... Methode auswählen? Was tut es? Alle Referenzlinks werden ebenfalls geschätzt!

+0

Werfen Sie einen Blick auf [diese Antwort] (https://stackoverflow.com/a/14374392/569436) –

Antwort

1

FOR XML wird einen XML-Datentyp zurückgeben; Die .value(...,...) zieht den XML-Wert heraus und konvertiert ihn in den definierten Datentyp. In Ihrem Fall alles im Wurzelknoten ('') umgewandelt varchar (max)

Für einige Blogs/suchen Links auf Aaron Bertrand's post oder Adam Machanic's auch für STRING_AGG in SQL2017 eine neue Funktion achten

1

Sie verwenden FOR XML PATH um Ihre Tabelle in XML zu konvertieren. XML-Daten werden von einem XML data type in SQL Server dargestellt und es ist möglich, eine Liste verschiedener methods auf diesem Datentyp zu verarbeiten. Eine dieser Methoden ist eine value method, die zwei Argumente hat: XQuery und Data Type. Die Methode ermöglicht Ihnen, die Daten in XML in ein anderes Format zu konvertieren (in Ihrem Fall varchar).

Verwandte Themen