sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo veo el contenido completo de una columna de texto o varchar (MAX) en SQL Server 2008 Management Studio?

SSMS solo permite datos ilimitados para datos XML. Este no es el valor predeterminado y debe configurarse en las opciones.

Un truco que podría funcionar en circunstancias bastante limitadas es simplemente nombrar la columna de una manera especial como se muestra a continuación para que se trate como datos XML.

DECLARE @S varchar(max) = 'A'

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

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

En SSMS (al menos las versiones 2012 a la actual de 18.3), esto muestra los resultados a continuación

Al hacer clic en él, se abren los resultados completos en el visor XML. Desplazarse hacia la derecha muestra que se conserva el último carácter de B,

Sin embargo, esto tiene algunos problemas significativos. Agregar columnas adicionales a la consulta rompe el efecto y todas las filas adicionales se concatenan con la primera. Finalmente, si la cadena contiene caracteres como < la apertura del visor XML falla con un error de análisis.

Una forma más robusta de hacer esto que evita problemas de conversión de SQL Server < a < etc. o fallando debido a estos caracteres está abajo (da crédito a Adam Machanic aquí).

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