Skip to content

OPENJSON: получение данных и PATH - часть 2

Пересказ статьи Marty Catherall. OPENJSON Getting to the data, and the PATH – PART II


Мы видели как вытащить данные из документа JSON в реляционную таблицу, используя явную схему, которая была определена в предложении WITH табличнозначной функции OPENJSON.
Однако в том примере мы использовали выражение PATH, которое бралось из корня документа JSON.

Теперь мы посмотрим на то, как поступить, если требуется взять PATH из определенной точки документа JSON.

Мы используем следующий простой документ, который содержит один объект

{
"Configuration Property": {
"Configuration name": "recovery interval (min)",
"Value": 0,
"minimum": 0,
"maximum": 32767,
"value_in_use": 0,
"description": "Maximum recovery interval in minutes",
"is_dynamic": true,
"is_advanced": true
}
}

Здесь мы хотим начать получение данных из документа, который начинается с пути

$."Configuration Property"

Все, что нам нужно сделать, это определить базовый PATH (начальную точку) в нашем запросе OPENJSON.

DECLARE @json NVARCHAR(MAX) =
N'
{
"Configuration Property": {
"Configuration name": "recovery interval (min)",
"Value": 0,
"minimum": 0,
"maximum": 32767,
"value_in_use": 0,
"description": "Maximum recovery interval in minutes",
"is_dynamic": true,
"is_advanced": true
}
}
';

SELECT
[Configuration name]
,[Value]
,[minimum]
,[maximum]
,[value_in_use]
,[description]
,[is_dynamic]
,[is_advanced]
FROM
OPENJSON(@json, '$."Configuration Property"')
WITH
(
[Configuration name] NVARCHAR(35)
,[Value] NVARCHAR(100)
,[minimum] NVARCHAR(100)
,[maximum] NVARCHAR(100)
,[value_in_use] NVARCHAR(100)
,[description] NVARCHAR(100)
,[is_dynamic] BIT
,[is_advanced] BIT
);

Надеюсь, эта статья была вам полезна. Скоро продолжим.

Категории: T-SQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.