我正在使用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。
任何帮助将不胜感激。
答案 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