Я пытаюсь найти значение определенного поля в столбце XML без использования функции преобразования или преобразования в SQL Server 2016, однако XML не содержит традиционных тегов. Я не слишком знаком с данными XML, поэтому пытаюсь понять, как лучше всего это сделать.
Я пытался использовать [column].value
, однако я не могу вернуть результат, потому что могуНе могу понять, как идентифицировать узлы без тегов.
Вот запрос, который я выполняю:
select customeridentifier, customerdemographics
from customerdatafile
Столбец демографии клиентов представляет собой xml, который выглядит следующим образом:
{
"request": {
"customer_id": "12345efg"
"ip_address": "12.1.4.12"
"name.value": "JAMES"
},
"customer_compatibility": 40
}
Я хочу вернуть значение для "customer_compatibility", которое я пытался выполнить с помощью чего-то вроде:
customerdemographics.value('(customer_compatibility)[1]','nvarchar(max)')
, который возвращает нулевое значение. С другой стороны,
customerdemographics.value('(.)','nvarchar(max)')
возвращает полное значение поля XML без проблем.
Какой самый эффективный способ возврата значения для customer_compatibility
из столбца XML? В худшем случае я могу выполнить приведение / преобразование, но из-за размера данных запросы будут выполняться медленно.