如何将文本属性解析为SQL Server 2005中的xml属性?

时间:2013-03-05 16:47:18

标签: sql xml sql-server-2005

我有一个表,其中包含一个名为custom_fields的属性,用于存储格式正确的xml:

<Root>
   ...
   <TotalMontoSoles></TotalMontoSoles>
   ...
</Root>

但是此属性不会存储为xml数据类型,而是存储为文本。我需要做的是设置TotalMontoSoles值,我试图通过使用XML-DML中的modify方法来实现这一点,但我一直得到

  

错误SQL:不允许从数据类型xml到文本的显式转换。

当我尝试将列转换为xml类型时出现

错误:

DECLARE @custom_fields xml
SET @custom_fields = (SELECT CAST(custom_fields as XML) FROM UPLOAD_HEADER_TEMPORAL
@custom_fields.modify('...')

我做错了什么?还有其他方法可以实现这个目标吗?

更新:

也许重要的是要指出我在这里要做的是创建一个过程,我在编译期间遇到了这个错误。

1 个答案:

答案 0 :(得分:1)

无法将文本列数据类型转换(强制转换为)XML。您可以(应该)使用其中一种varchar类型。 Microsoft将在未来某个时候删除文本(和图像)数据类型。

http://msdn.microsoft.com/en-us/library/ms187993%28v=sql.90%29.aspx

  

ntext,text和image数据类型将在Microsoft SQL Server的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max),varchar(max)和varbinary(max)。