我有以下 SQL 查询:
DECLARE @XMLDOC XML
SET @XMLDOC = '<Feed><Product><Name>Foo</Name></Product></Feed>'
SELECT x.u.value('Name[1]', 'varchar(100)') as Name
from @XMLDOC.nodes('/Feed/Product') x(u)
这将返回:
Name
----
Foo
但是,如果我的<Feed>
节点有一个xmlns
属性,那么这不会返回任何结果:
DECLARE @XMLDOC XML
SET @XMLDOC = '<Feed xmlns="bar"><Product><Name>Foo</Name></Product></Feed>'
SELECT x.u.value('Name[1]', 'varchar(100)') as Name
from @XMLDOC.nodes('/Feed/Product') x(u)
回报:
Name
----
只有当我有一个xmlns
属性时才会发生这种情况,其他任何东西都可以正常工作。
为什么会这样,以及如何修改我的 SQL 查询以返回结果而不考虑属性?