Нахождение порядка узлов в XML-документе в SQL Server
Как я могу найти порядок узлов в документе XML?
У меня есть такой документ:
<value code="1">
<value code="11">
<value code="111"/>
</value>
<value code="12">
<value code="121">
<value code="1211"/>
<value code="1212"/>
</value>
</value>
</value>
и я пытаюсь поместить эту вещь в таблицу, определенную как
CREATE TABLE values(
code int,
parent_code int,
ord int
)
Сохранение порядка значений из документа XML (их нельзя упорядочить по их коду). Я хочу быть в состоянии сказать
SELECT code
FROM values
WHERE parent_code = 121
ORDER BY ord
и результаты должны, детерминистически, быть
code
1211
1212
я пытался
SELECT
value.value('@code', 'varchar(20)') code,
value.value('../@code', 'varchar(20)') parent,
value.value('position()', 'int')
FROM @xml.nodes('/root//value') n(value)
ORDER BY code desc
Но он не принимаетposition()
функция (& apos;position()
& APOS; может использоваться только внутри предиката или селектора XPath).
Я предполагаю, что это возможно каким-то образом, но как?