【发布时间】:2019-10-30 04:48:41
【问题描述】:
我试图在 SQL Server 2016 中不使用 convert 或 cast 来查找 XML 列中特定字段的值,但是 XML 不包含传统标记。我对 XML 数据不太熟悉,所以我试图了解如何最好地完成这一点。
我尝试过使用[column].value,但是我无法返回结果,因为我不知道如何识别没有标签的节点。
这是我正在运行的查询:
select customeridentifier, customerdemographics
from customerdatafile
customerdemographics 列是 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 字段的完整值。
从 XML 列返回 customer_compatibility 值的最有效方法是什么?最坏的情况,我可以进行转换/转换,但由于数据大小,查询会很慢。
【问题讨论】:
-
那是 不是 XML - 那是 JSON :.....
标签: json sql-server xml