В этом руководстве вы узнаете, как использовать функцию SQL Server OPENJSON() для анализа текста JSON и преобразования его элементов в строки и столбцы.
Введение в функцию SQL Server OPENJSON()
Функция OPENJSON() — это табличная функция, которая анализирует строку JSON и возвращает значения из входного JSON в виде строк и столбцов. Другими словами, функция OPENJSON() преобразует строку JSON в строки и столбцы.
Вот базовый синтаксис функции OPENJSON():
OPENJSON(json_expression [, path])
[WITH(
option1 [,...optionN]
)]
В этом синтаксисе:
- json_expression: Это документ JSON, который вы хотите проанализировать.
- path: Этот путь JSON указывает элемент JSON для извлечения. Путь необязателен. Если вы его опустите, функция OPENJSON() проанализирует весь документ JSON.
- option1, option2, …: Это необязательные параметры, которые определяют дополнительные параметры, такие как преобразование типа данных, определение схемы и обработка ошибок.
Примеры функции SQL Server OPENJSON()
Давайте рассмотрим несколько примеров использования функции OPENJSON().
1) Пример базовой функции OPENJSON()
Предположим, у вас есть следующий документ JSON:
{
"name": "John",
"age": 25,
"skills": [
"SQL Server",
"C#",
".NET"
],
"address": null,
"active": true,
"phone": {
"work": "(408)-123-4567",
"home": "(408)-789-1234"
}
}
В следующем примере функция OPENJSON() используется для анализа и преобразования документа JSON в строки и столбцы:
SELECT
*
FROM
OPENJSON(
'{"name": "John", "age": 25, "skills" : ["SQL Server","C#", ".NET"], "address":null, "active": true, "phone": {"work": "(408)-123-4567", "home": "(408)-789-1234"}}'
)
ORDER BY
type;
Выход:
key | value | type
-----------------------------------------------------------------------
address | None | 0
name | John | 1
age | 25 | 2
active | true | 3
skills | ["SQL Server","C#", ".NET"] | 4
phone | {"work": "(408)-123-4567", "home": "(408)-789-1234"} | 5
Вывод состоит из трех столбцов: ключ, значение и тип.
Ключи и значения в результирующем наборе соответствуют ключам и значениям в документе JSON. Значение столбца type определяет тип данных соответствующего значения в результате:
| тип | Тип данных JSON |
|---|---|
| 0 | нулевой |
| 1 | нить |
| 2 | число |
| 3 | правда/ложь |
| 4 | множество |
| 5 | объект |
2) Использование функции OPENJSON() с явной структурой
Предложение WITH в функции OPENJSON() позволяет указать схему для набора результатов. Функция OPENJSON() вернет набор результатов только со столбцами, которые вы определили в предложении WITH.
В следующем примере функция OPENJSON() используется для анализа и преобразования элементов строки JSON в определенную схему:
SELECT
*
FROM
OPENJSON(
'{"name": "John", "age": 25, "skills" : ["SQL Server","C#", ".NET"], "address":null, "active": true, "phone": {"work": "(408)-123-4567", "home": "(408)-789-1234"}}'
)
WITH(
name VARCHAR(100) '$.name',
age INT '$.age',
active BIT '$.active',
work_phone VARCHAR(20) '$.phone.work',
home_phone VARCHAR(25) '$.phone.home',
address VARCHAR(255) '$.address'
);
Выход:
name | age | active | work_phone | home_phone | address ---------------------------------------------------------------- John | 25 | True |(408)-123-4567 |(408)-789-1234 | NULL
Краткое содержание
- Используйте функцию OPENJSON() для анализа текста JSON и преобразования его элементов в строки и столбцы.


