SQL从非xml类型列获取xml数据属性和值

时间:2015-03-20 08:37:24

标签: sql sql-server sql-server-2008 openfire sqlxml

如何使用SQL从非xml类型列检索xml类型数据 我里面有一张桌子和一根柱子 xml是ntext

类型的列

xml列数据示例如下所示

<message to="4075@abc.myftp.org" type="chat" from="5082@abc.myftp.org/e76bea0f">
<body>james bond</body>
<active xmlns="http://jabber.org/protocol/chatstates" />
</message>

我想获取“to”,“from”属性值以及标记值

请建议

1 个答案:

答案 0 :(得分:0)

您错过了xml中的结束标记</message>,但如果添加它,则可以使用value()函数:

declare @temp table (data ntext)

insert into @temp (data)
select '<message to="4075@abc.myftp.org" type="chat" from="5082@abc.myftp.org/e76bea0f">
<body>james bond</body>
<active xmlns="http://jabber.org/protocol/chatstates" />
</message>'

select
    c.data.value('message[1]/@to', 'nvarchar(max)')
from @temp as t
    outer apply (select cast(data as xml)) as c(data)