无法从根元素中检索XML中的值

时间:2016-02-08 05:01:53

标签: sql-server sql-server-2008

我正在使用xml来使用sql server检索数据,但是我无法从下面列出的查询中检索正确的值。

DECLARE @XML AS XML,
        @hDoc AS INT
set @XML = '
<root>
        <a>
            <b>Name</b>
            <y>
                <c>
                    <d>M</d>
                </c>
            </y>
            <e>Test1</e>
        </a>
        <a>
            <b>CX</b>
            <e>Test</e>
        </a>
</root>
'
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

SELECT a.d, a.b, a.e
FROM OPENXML(@hDoc, 'root/a')
WITH 
(
d [nvarchar](20) '//y/c/d',
b [nvarchar](500) 'b',
e [nvarchar](500) 'e'
) a 

-- the output of this query is 
d   b   e
M   Name    Test1
M   CX  Test

问题是我想要<d>的相应值,但无论何时提供<d>,它都会返回值“M”。在没有提供<d>值的地方我需要值NULL。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

SELECT 
    a.d, 
    a.b, 
    a.e
FROM OPENXML(@hDoc, 'root/a')
WITH 
(
d [nvarchar](20) 'y/c/d',
b [nvarchar](500) 'b',
e [nvarchar](500) 'e'
) a