Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie zeige ich den vollständigen Inhalt einer Text- oder varchar(MAX)-Spalte in SQL Server 2008 Management Studio an?

SSMS lässt nur unbegrenzte Daten für XML-Daten zu. Dies ist nicht die Voreinstellung und muss in den Optionen eingestellt werden.

Ein Trick, der unter recht begrenzten Umständen funktionieren könnte, besteht darin, die Spalte einfach auf eine spezielle Weise wie unten zu benennen, damit sie als XML-Daten behandelt wird.

DECLARE @S varchar(max) = 'A'

SET @S =  REPLICATE(@S,100000) + 'B' 

SELECT @S as [XML_F52E2B61-18A1-11d1-B105-00805F49916B]

In SSMS (mindestens Versionen 2012 bis aktuell 18.3) werden die Ergebnisse wie folgt angezeigt

Ein Klick darauf öffnet die vollständigen Ergebnisse im XML-Viewer. Scrollen nach rechts zeigt, dass das letzte Zeichen von B beibehalten wird,

Dies hat jedoch einige erhebliche Probleme. Das Hinzufügen zusätzlicher Spalten zur Abfrage unterbricht den Effekt und alle zusätzlichen Zeilen werden mit der ersten verkettet. Schließlich, wenn die Zeichenfolge Zeichen wie < enthält Das Öffnen des XML-Viewers schlägt mit einem Parsing-Fehler fehl.

Ein robusterer Weg, dies zu tun, der Probleme vermeidet, dass SQL Server < konvertiert zu < usw. oder aufgrund dieser Zeichen fehlschlägt, ist unten (Quelle:Adam Machanic hier).

DECLARE @S varchar(max)

SELECT @S = ''

SELECT @S = @S + '
' + OBJECT_DEFINITION(OBJECT_ID) FROM SYS.PROCEDURES

SELECT @S AS [processing-instruction(x)] FOR XML PATH('')