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

SQL fetch xml data attribute and values from non xml type column

如何使用 SQL 从非 xml 类型的列中检索 xml 类型的数据 我有一个 table 和里面的一列 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" 属性值和标签值

请推荐

您在 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)