如何在SQL Server Management Studio中查看NTEXT或NVARCHAR(max)中的所有文本?默认情况下,它似乎只返回前几百个字符(255?),但有时我只是想要一种快速查看整个字段的方法,而不必编写程序来做到这一点。即使是SSMS 2012仍然存在这个问题:(


当前回答

快速查看大型varchar/text列的最简单方法:

declare @t varchar(max)

select @t = long_column from table

print @t

其他回答

快速技巧-

SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629

我能够从NVARCHAR(MAX)列中获得全文(99,208个字符),只需选择(Results to Grid)该列,然后右键单击它,然后将结果保存为CSV文件。要查看结果,使用文本编辑器(不是Excel)打开CSV文件。有趣的是,当我试图运行相同的查询,但启用了“结果到文件”,输出被使用“结果到文本”限制截断。

@MartinSmith描述为对(目前)接受的答案的评论的解决方法对我来说不起作用(在试图查看完整的XML结果时,出现了一个错误,抱怨“'['字符,十六进制值0x5B,不能包含在名称中”)。

我已经为SSMS写了一个插件,这个问题已经解决了。你可以使用以下两种方法之一:

您可以使用“复制当前单元格1:1”将原始单元格数据复制到剪贴板:

http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks

或者,您可以选择在外部文本编辑器(notepad++或notepad)中使用“单元格可视化”功能:http://www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers打开单元格内容

(功能允许在任何外部应用程序中打开字段的内容,所以如果你知道它是文本-你使用文本编辑器打开它。如果内容是带有图片的二进制数据,则选择视图作为图片。下面的示例显示打开图片):

在较新版本的SSMS中,可以在(查询/查询选项/结果/网格/最大字符检索)菜单中配置:


旧版本的SSMS

选项(查询结果/SQL Server/网格页面结果)

如果要更改当前查询的选项,请在“查询”菜单中单击“查询选项”,或在“SQL Server查询”窗口中单击右键,选择“查询选项”。

...

最大字符检索 输入一个从1到65535的数字来指定在每个单元格中显示的最大字符数。

如你所见,最大值是64k。默认值要小得多。

BTW,结果到文本有更激烈的限制:

每列显示的最大字符数 该值默认为256。增加此值以显示更大的结果集而不截断。最大值为8192。

如果你只需要查看它,我使用了这个:

print cast(dbo.f_functiondeliveringbigformattedtext(seed) as text)

最终的结果是,我得到换行和所有的内容在短信窗口的消息。 当然,它只允许一个单元格-如果你想从一些行中做一个单元格,你可以这样做:

declare @T varchar(max)=''
select @T=@T
       + isnull(dbo.f_functiondeliveringbigformattedtext(x.a),'NOTHINGFOUND!')
       + replicate(char(13),4)
from x -- table containing multiple rows and a value in column a
print @T

我使用它来验证SQL代码生成的JSON字符串。否则太难读了!