【发布时间】:2019-04-01 10:53:55
【问题描述】:
所以我需要从 JSON 存储中提取一些数据,并且大部分情况下使用JSONVALUE() 非常简单。不过有些商店似乎使用了更深层次的存储方法。
一些示例代码;
DECLARE @json NVARCHAR(MAX) = '{
"N.data.-60d8249a-ed12-4f41-98f4-01c910c6b2f4": null,
"R.title": "{\"description\":\"Mr\",\"alternates\":{},\"position\":0}",
"R.gender": "{\"description\":\"Male\",\"alternates\":{},\"position\":1}",
"R.jobTitle": "{\"description\":\"Operations\",\"alternates\":{},\"position\":2}"
}'
我需要做的是从每个键中提取“描述”方面。例如,“R.title”会给我“先生”等。
理想情况下,我每次都可以使用参数方法提取特定密钥:
DECLARE @id nvarchar(200) = 'R.title'
SELECT
*
FROM OPENJSON(@json, concat('$."',@id,'"')) AS a
有没有正确的方法可以做到这一点,而无需使用讨厌的 substring() 方法?
谢谢!
SQL Server 版本:
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 2017 年 8 月 22 日 17:04:49 版权所有 (C) 2017 Microsoft Corporation Express Edition Windows Server 2012 R2 Datacenter 6.3(内部版本 9600:)上的(64 位) (管理程序)
【问题讨论】:
标签: sql json sql-server