2016-02-29 3 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

ВОДИТЕЛЯ

Как я могу сделать это случиться ?

спасибо.

+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() 
Смежные вопросы