Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como faço para exibir o conteúdo completo de uma coluna de texto ou varchar(MAX) no SQL Server 2008 Management Studio?


O SSMS permite apenas dados ilimitados para dados XML. Este não é o padrão e precisa ser definido nas opções.



Um truque que pode funcionar em circunstâncias bastante limitadas é simplesmente nomear a coluna de uma maneira especial como abaixo para que seja tratada como dados XML.
DECLARE @S varchar(max) = 'A'

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

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

No SSMS (pelo menos nas versões 2012 até a atual de 18.3), isso exibe os resultados conforme abaixo



Clicar nele abre os resultados completos no visualizador de XML. Rolar para a direita mostra que o último caractere de B é preservado,

No entanto, isso tem alguns problemas significativos. Adicionar colunas extras à consulta quebra o efeito e todas as linhas extras ficam concatenadas com a primeira. Finalmente, se a string contiver caracteres como < a abertura do visualizador XML falha com um erro de análise.

Uma maneira mais robusta de fazer isso que evita problemas de conversão do SQL Server < para < etc ou falhando devido a esses caracteres está abaixo (crédito Adam Machanic aqui).
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('')