Итак, у меня есть требование извлечь некоторые данные из хранилища 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 ()?
Спасибо!
Using;
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Express Edition (64-bit) on Windows Server 2012 R2 Datacenter 6.3 <X64> (Build 9600: ) (Hypervisor)