如何在SQL Server Management Studio中查看NTEXT或NVARCHAR(max)中的所有文本?默认情况下,它似乎只返回前几百个字符(255?),但有时我只是想要一种快速查看整个字段的方法,而不必编写程序来做到这一点。即使是SSMS 2012仍然存在这个问题:(
当前回答
使用visual studio代码与sql server插件。对于jsons非常有用
其他回答
替代方案1:右键单击复制单元格并粘贴到文本编辑器(希望与utf-8支持)
方法2:右键单击,导出到CSV文件
替代方案3:使用SUBSTRING函数来可视化列的各个部分。例子:
SELECT SUBSTRING(fileXml,2200,200) FROM mytable WHERE id=123456
我能够从NVARCHAR(MAX)列中获得全文(99,208个字符),只需选择(Results to Grid)该列,然后右键单击它,然后将结果保存为CSV文件。要查看结果,使用文本编辑器(不是Excel)打开CSV文件。有趣的是,当我试图运行相同的查询,但启用了“结果到文件”,输出被使用“结果到文本”限制截断。
@MartinSmith描述为对(目前)接受的答案的评论的解决方法对我来说不起作用(在试图查看完整的XML结果时,出现了一个错误,抱怨“'['字符,十六进制值0x5B,不能包含在名称中”)。
今天我用这个方法成功了。它与其他答案相似,它也将内容转换为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')
我已经为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打开单元格内容
(功能允许在任何外部应用程序中打开字段的内容,所以如果你知道它是文本-你使用文本编辑器打开它。如果内容是带有图片的二进制数据,则选择视图作为图片。下面的示例显示打开图片):
快速查看大型varchar/text列的最简单方法:
declare @t varchar(max)
select @t = long_column from table
print @t
推荐文章
- 确定记录是否存在的最快方法
- 从现有模式生成表关系图(SQL Server)
- 我如何循环通过一组记录在SQL Server?
- 数据库和模式的区别
- 如何在SQL Server中一次更改多个列
- 如何从SQL Server Management Studio的历史记录中删除“服务器名称”项
- 外键约束可能导致循环或多条级联路径?
- 如何选择每一行的列值不是独特的
- nvarchar(max)非文本
- 在SQL Server 2008 R2中重命名数据库时出错
- 将数据复制到另一个表中
- 如何在SQL中选择表的最后一条记录?
- 修改列,添加默认约束
- 在存储过程中使用“SET XACT_ABORT ON”有什么好处?
- 如何检查SQL Server文本列是否为空?