2011-01-05 110 views
18

MS Sql中有数据类型不被delphi 7支持,xml数据类型就是一个例子。ms sql xml数据类型转换为文本

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

有没有办法从xml转换为文本?

回答

33

一个简单的投就足够了:

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

或者非Unicode:

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

不能明确地转换为 '文本' 的数据类型。

我已经添加了as XMLCol以确保转换后的数据与列的名称相同。当然你不需要这个。

编辑:

几个环节。无论如何,鼓励您使用nvarchar(max)而不是text。微软表示他们将在未来的版本中弃用这些类型。为nvarchar(最大)应该为您提供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

+0

varchar的问题是x字节的限制,对于xml而言不是这种情况。 – none 2011-01-05 15:53:49

+2

您使用的是哪个版本的SQL。 nvarchar(最大)应该为您提供高达2GB。 – 2011-01-05 16:02:58

+0

快速搜索后,指定varchar(5000)和varchar(max) – none 2011-01-05 19:31:23

8
SELECT CAST(YourXMLColumn as nvarchar(max)) 
    FROM YourTable 
+0

这是我常做的,它是如此干净,易记,难惹了:) – Squazz 2016-04-14 14:01:35