如何在SQL Server Management Studio中查看NTEXT或NVARCHAR(max)中的所有文本?默认情况下,它似乎仅返回前几百个字符(255个字符?),但有时我只想快速查看整个字段,而无需编写程序来实现它。即使在SSMS 2012中仍存在此问题:(
如何在SQL Server Management Studio中查看NTEXT或NVARCHAR(max)中的所有文本?默认情况下,它似乎仅返回前几百个字符(255个字符?),但有时我只想快速查看整个字段,而无需编写程序来实现它。即使在SSMS 2012中仍存在此问题:(
我可以通过选择(结果以网格形式)相应的列,并右键单击保存为CSV文件,从NVARCHAR(MAX)列中获取完整文本(99,208字符)。要查看结果,请使用文本编辑器(而不是Excel)打开CSV文件。有趣的是,当我尝试运行相同的查询,但启用了“结果保存到文件”,输出会使用结果保存到文本限制进行截断。
@MartinSmith针对当前被接受的答案所描述的解决方法在我的情况下无效(尝试查看完整XML结果时出错,抱怨“'['字符,十六进制值0x5B,在名称中无法包含”)。
快速技巧 -
SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629
DECLARE @g geography;
...
select Cast(@g.ToString() as xml);
- Sergei ZinovyevCAST('' AS xml).query('sql:column("Logs.LogInfo")')
- Charlieface我已经为 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
(该功能允许在任何外部应用程序中打开字段内容,因此如果你知道它是文本,你可以使用文本编辑器打开它。如果内容是带有图片的二进制数据,则选择将其视为图片。下面的示例显示了打开图片的过程):
将数据作为XML返回
SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'
确保在SSMS选项窗口中设置一个合理的限制,这取决于你希望得到的结果。
如果要返回的文本包含未编码字符(例如使用&
代替&
),将导致XML转换失败。
使用PowerShell返回数据
为此,你需要在运行命令的计算机上安装PowerShell SQL Server模块。
如果已准备好,请配置并运行以下脚本:
Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"
请确保将-MaxCharLength
参数设置为适合您需求的值。
FOR XML PATH
,所以我想为完整性而添加它:SELECT [COL_NVARCHAR_MAX]
FROM [SOME_TABLE]
FOR XML PATH(''), ROOT('ROOT')
这将生成一个有效的XML文件,其中包含所有行的内容,嵌套在外部的<ROOT></ROOT>
元素中。每个单独行的内容都将包含在一个元素内,例如此示例中称为<COL_NVARCHAR_MAX>
。可以通过AS
使用别名更改其名称。
特殊字符如&
、<
或>
将转换为它们各自的实体。因此,根据需要对结果进行的操作,您可能需要将<
、>
和&
转换回它们的原始字符。
编辑
我刚意识到也可以使用FOR XML
指定CDATA
。虽然我认为有点麻烦。这样做:
SELECT 1 as tag, 0 as parent, [COL_NVARCHAR_MAX] as [COL_NVARCHAR_MAX!1!!CDATA]
FROM [SOME_TABLE]
FOR XML EXPLICIT, ROOT('ROOT')
使用Visual Studio Code SQL Server插件。它对JSON非常有用。
这是一篇旧文章,我已经阅读了答案。但我发现从SSMS输出多行大文本字段仍然有点困难。我最终编写了一个小的C#程序来满足我的需求,但随后想到可能可以使用命令行完成。事实证明,使用PowerShell相当容易。
首先,在管理权限的PowerShell中安装SqlServer
模块。
Install-Module -Name SqlServer
Invoke-Sqlcmd
运行您的查询:$Rows = Invoke-Sqlcmd -Query "select BigColumn from SomeTable where Id = 123" `
-MaxCharLength 2147483647 -ConnectionString $ConnectionString
$Rows[0].BigColumn
$Rows[0].BigColumn | Out-File -FilePath .\output.txt -Encoding UTF8
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
备选方案1:右击以复制单元格,粘贴到文本编辑器中(希望支持 utf-8)
备选方案2:右击并导出为 CSV 文件
备选方案3:使用 SUBSTRING 函数来可视化列的部分内容。例如:
SELECT SUBSTRING(fileXml,2200,200) FROM mytable WHERE id=123456