Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment afficher le contenu complet d'une colonne text ou varchar(MAX) dans SQL Server 2008 Management Studio ?

SSMS autorise uniquement des données illimitées pour les données XML. Ce n'est pas la valeur par défaut et doit être définie dans les options.

Une astuce qui pourrait fonctionner dans des circonstances assez limitées consiste simplement à nommer la colonne d'une manière spéciale comme ci-dessous afin qu'elle soit traitée comme des données XML.

DECLARE @S varchar(max) = 'A'

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

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

Dans SSMS (au moins les versions 2012 à la version actuelle de 18.3), cela affiche les résultats comme ci-dessous

Cliquer dessus ouvre les résultats complets dans le visualiseur XML. Le défilement vers la droite montre que le dernier caractère de B est conservé,

Cependant, cela pose des problèmes importants. L'ajout de colonnes supplémentaires à la requête annule l'effet et les lignes supplémentaires sont toutes concaténées avec la première. Enfin si la chaîne contient des caractères tels que < l'ouverture de la visionneuse XML échoue avec une erreur d'analyse.

Une manière plus robuste de le faire qui évite les problèmes de conversion de SQL Server < à < etc ou échouer à cause de ces caractères est ci-dessous (créditez Adam Machanic ici).

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('')