将FOR XML转换为Varchar(max)

3
我有一个查询返回XML,我想将其转换为varchar。我的查询返回93,643个字符的XML。当我尝试将我的xml结果强制转换为varchar时,当我将结果集复制到文本编辑器中时,我只得到43,679个字符。当我执行len(xmlString)时,我得到93,643个字符。
我知道从这篇文章post中,varchar(max)可以有最多2 ^ 31个字符,1个字节= 1个字符,但它似乎正在切断我的数据。
XML字符是否算作多于1个字节?为什么我不能选择所有来自我的xml结果的数据?
CAST((SELECT COLUMNS FROM TABLE FOR XML PATH('Name'), TYPE) AS VARCHAR(MAX)

它没有解决我的问题。我已经更改了那些。 - sixshift04
1
你需要停止使用管理工具来返回大字符串(或“验证”它们的长度)。 - Aaron Bertrand
我认为你应该查看这篇文章:https://dev59.com/Lmct5IYBdhLWcg3wsPZ5#11900246 - Andrei Rantsevich
2个回答

0
不确定为什么需要将xml数据转换为varchar(max),但如果您只想复制所有数据,则根本不需要进行转换。在这种情况下,在结果窗口中,您将看到一个可点击值的单元格(就像Web链接一样)。单击它,您的所有数据将在新窗口中打开,然后您将能够像文件一样保存它或者只是复制它。希望这可以帮助您。

1
但是即使是XML输出在SSMS中也被限制为64K。如果您想使用SSMS验证长度,只需检查DATALENGTH()。如果您想验证整个字符串,请使用其他方法。 - Aaron Bertrand

0

这只是Management Studio的一个限制。
在一个更大的表上进行测试查询,我得到了43,679个字符的描述。
相同的查询通过ADO在应用程序中提供了267089个字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接