Я получил выбор для работы с помощью оператора
SELECT @xml.value('string(/PointConf[1]/GlobalFlags/Order[1]/@value)','int')
Я понимаю требование для индекса [1]
на узле Order, поскольку это может быть список, однако я не понимаю, почему это требуется для узла PointConf
.
[1]
необходимо использовать на фактическом уровне, где существует список, чтобы ограничить этот список одним возвращаемым значением
string(...)
превращает набор узлов в строку (или пустую строку). Я думаю, что это помогает с xsd:any
, хотя я не совсем уверен, почему - я думаю, что-то связанное с обработкой возможности полного отсутствия узла Order
.
Обновление:
Следующее расследование:
SELECT @xml.value('string((/PointConf/GlobalFlags/Order/@value)[1])','int')
тоже работает.
Так что это просто строковая функция, которая требуется для работы в этом случае.