2016-02-29 59 views
2
DECLARE @XML XML 
SET @xml = ' 
<root> 
    <a> 
     <DATE_OF_BIRTH> 19871224</DATE_OF_BIRTH> 
     <DRIVER> MIKE </DRIVER> 
    </a> 
    <a> 
     <DATE_OF_BIRTH> 19881124</DATE_OF_BIRTH> 
     <DRIVER> TOM </DRIVER> 
    </a> 
    <a> 
     <DATE_OF_BIRTH> 19770601</DATE_OF_BIRTH> 
     <DRIVER> DAVID </DRIVER> 
    </a> 
</root>' 

select x.value('.','varchar(100)') 
from @xml.nodes('//a') as T(X) 

我想使用XQuery返回元素名称XQuery来返回元素名称

这样

DATE_OF_BIRTH结果

DRIVER

我怎样才能做到这一点?

非常感谢。

+0

这就是你要找的答案: http://stackoverflow.com/问题/ 15680259/parse-xml-in-sql-server – pcbabu

回答

3

如果您尝试以下方法:

select X.query('local-name(.)') 
from @xml.nodes('//a/*') as T(X) 

则回复:

DATE_OF_BIRTH 
DRIVER 
DATE_OF_BIRTH 
DRIVER 
DATE_OF_BIRTH 
DRIVER 
+0

它的工作原理。非常感谢您的回答。 – Mike

3

使用local-name()(或name()如果要包括命名空间),所以它应该是

//a/*/local-name()