如何在SQL Server Management Studio中查看NTEXT或NVARCHAR(max)中的所有文本?默认情况下,它似乎只返回前几百个字符(255?),但有时我只是想要一种快速查看整个字段的方法,而不必编写程序来做到这一点。即使是SSMS 2012仍然存在这个问题:(
当前回答
快速技巧-
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中,可以在(查询/查询选项/结果/网格/最大字符检索)菜单中配置:
旧版本的SSMS
选项(查询结果/SQL Server/网格页面结果)
如果要更改当前查询的选项,请在“查询”菜单中单击“查询选项”,或在“SQL Server查询”窗口中单击右键,选择“查询选项”。
...
最大字符检索 输入一个从1到65535的数字来指定在每个单元格中显示的最大字符数。
如你所见,最大值是64k。默认值要小得多。
BTW,结果到文本有更激烈的限制:
每列显示的最大字符数 该值默认为256。增加此值以显示更大的结果集而不截断。最大值为8192。
今天我用这个方法成功了。它与其他答案相似,它也将内容转换为XML,只是使用了不同的方法。由于我没有在答案中看到FOR XML PATH,我想为了完整性,我应该添加它:
SELECT [COL_NVARCHAR_MAX]
FROM [SOME_TABLE]
FOR XML PATH(''), ROOT('ROOT')
这将交付一个包含所有行内容的有效XML,嵌套在一个外部<ROOT></ROOT>元素中。每一行的内容都包含在一个元素中,在本例中,该元素称为<COL_NVARCHAR_MAX>。它的名称可以通过AS使用别名来更改。
特殊字符如&、<或>或类似字符将被转换为它们各自的实体。所以你可能需要转换<, >和,回到它们原来的字符,这取决于你需要对结果做什么。
EDIT
我刚刚意识到CDATA也可以使用FOR XML指定。不过我觉得有点麻烦。这样可以做到:
SELECT 1 as tag, 0 as parent, [COL_NVARCHAR_MAX] as [COL_NVARCHAR_MAX!1!!CDATA]
FROM [SOME_TABLE]
FOR XML EXPLICIT, ROOT('ROOT')
如果你只需要查看它,我使用了这个:
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字符串。否则太难读了!
替代方案1:右键单击复制单元格并粘贴到文本编辑器(希望与utf-8支持)
方法2:右键单击,导出到CSV文件
替代方案3:使用SUBSTRING函数来可视化列的各个部分。例子:
SELECT SUBSTRING(fileXml,2200,200) FROM mytable WHERE id=123456
推荐文章
- 设置数据库从单用户模式到多用户
- 我如何转义一个百分比符号在T-SQL?
- SQL Server恢复错误-拒绝访问
- 的类型不能用作索引中的键列
- 如何在SQL Server Management Studio中查看查询历史
- SQL Server索引命名约定
- 可以为公共表表达式创建嵌套WITH子句吗?
- SQL Server的NOW()?
- 在SQL Server中截断(不是四舍五入)小数位
- 如何在SQL Server数据库中更改列数据类型而不丢失数据?
- 保持简单,以及如何在一个查询中执行多个CTE
- 如何使用TSQL截断数据库中的所有表?
- SQL Server Management Studio 2012在哪里?
- 如何从表中导出所有数据到可插入的sql格式?
- 我如何执行插入和返回插入的身份与Dapper?