1

我有一个表,其中有一个名为xml_cache的列,其中包含最多 80,000 个字符。该列被声明为nvarchar(max)

我在使用 SQL Management Studio 检索此列的内容时遇到问题

SELECT [xml_cache], * FROM [dbo].[NZF_topic] AS nt
WHERE nt.id LIKE '%nzf_1609%'

当我运行这个 SQL 时,输出网格包含截断的数据,正好在第 43680 个字符处。

查看输出网格:屏幕截图 - 大尺寸

输出被截断

如何检索此列的全部内容(不修改架构)?

4

3 回答 3

2

在我发布问题后,我看到了 这个相关的问题。解决方法是将列包裹在里面<xml><![CDATA[ long content ]]</xml>

SELECT convert(xml,'<xml><![CDATA[' + cast(xml_cache as varchar(max)) + ']]></xml>'), 

* FROM [dbo].[NZF_topic] AS nt

WHERE nt.id LIKE '%nzf_1609%' 

然后使用一些简单的搜索和替换(&lt;--> <&gt;--> >),我们可以获得正确的输出。好吧,这不是完美的解决方案,但嘿,MS 产品也不完美。

于 2014-03-10T11:05:02.743 回答
0

首先,查询分析器工具存在区域限制。在查询上单击鼠标右键

你会发现两个领域:

执行 -> 常规 -> SET TEXTSIZE

结果 -> 网格 -> 检索到的最大字符数

无论如何,也许您无法使用查询分析器获得那么大的文本。这是因为查询分析器是一种开发工具,检索人类无法阅读的大文本没有意义。

于 2014-03-10T11:02:56.060 回答
0

这是 SQL Server Management Studio 的限制,但在 SSMS 18.2 中,此限制已增加。默认情况下,它会截断为 65535 个字符(而不是 43679),但您可以在工具/选项/查询结果/SQL Server/结果到网格/非 XML 数据中配置它以显示最多 2097152 个字符。

请参阅https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017#new-in-this-release-ssms-182

于 2019-09-22T10:42:57.273 回答