将MS SQL的XML数据类型转换为文本

38

在 MS Sql 中存在一些 Delphi 7 不支持的数据类型,例如 XML 数据类型。

我希望将 XML 数据类型转换为文本数据类型,以便在 Delphi 中处理。

是否有一种方法可以从 XML 转换为文本呢?

3个回答

75
一个简单的类型转换就足够了:
select cast(XMLCol as nvarchar(max)) as XMLCol 

或者对于非Unicode:

select cast(XMLCol as varchar(max)) as XMLCol 

你无法显式地将数据类型转换为“text”。

我添加了as XMLCol以确保转换后的数据具有与列相同的名称。当然,你不必这样做。

编辑:

以下是一些链接。我们建议您始终使用nvarchar(max)而不是text。 Microsoft已表示将在未来的版本中弃用此类类型。nvarchar(max)应该提供2GB:

http://www.petefreitag.com/item/734.cfm

http://www.teratrax.com/articles/varchar_max.html

http://msdn.microsoft.com/en-us/library/ms187752(v=SQL.90).aspx


varchar 的问题在于其长度限制为 x 字节,而 XML 并没有这个限制。 - none
3
你使用的是哪个版本的SQL?nvarchar(max)可以为你提供多达2GB的空间。 - James Wiseman
经过快速搜索,指定varchar(5000)和varchar(max)之间存在差异。 - none
1
CAST()或CONVERT()都不能正确取消转义XML。在节点集查询函数中,当没有匹配标签时将转换为NULL的处理也会失败。 - Jay

11
SELECT CAST(YourXMLColumn as nvarchar(max))
    FROM YourTable

这是我通常做的事情,非常简洁,易于记忆,难以搞砸 :) - Squazz

0

我刚刚尝试了以下解决方案,是的,你确实需要 as XMLCol

select cast(XMLCol as nvarchar(max)) as XMLCol 

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