Краткое введение в SQL JSON
JSON (JavaScript Object Notation) — это текстовый формат для хранения и передачи структурированных данных. Стандарт основан на синтаксисе объекта в JavaScript, но не привязан к нему. Этот формат состоит из следующих элементов и их комбинаций:
- «Объект» — пара или набор пар ключ‑значения, заключенные в фигурные скобки,
- «Массив» — состоит из упорядоченного списка значений, заключённых в квадратные скобки,
- «Скаляр» — представление простых значений, таких как строки, числа или логические значения,
- «null» — отсутствие значения.
Пример
{
"responded": [{"code":404},
{"code":418},
{"ok":false},
null ],
"element": "button"
}
СУБД РЕД База Данных 5 поддерживает утвержденный ISO стандарт SQL/JSON ISO/IEC TR 19 075–6, который описывает функционал для работы с JSON данными из SQL.
Стандарт SQL/JSON включает различные функции для генерации, запроса и валидации данных в JSON:
Функции генерации используются для создания JSON данных (объектов или массивов) на основе значений SQL. Функции запроса позволяют извлекать данные из JSON по выражению пути. Из результата убираются пробелы, переносы на новую строку и символы табуляции. Функции валидации используются для проверки правильности JSON данных.
Существуют следующие функции запроса:
- JSON_VALUE — извлекает скалярное значение;
- JSON_QUERY — извлекает объекты JSON и массивы JSON;
- JSON_TABLE — извлекает реляционные данные из данных JSON;
- JSON_MODIFY — изменяет существующие значения или добавляет новые.
Для обращения к элементам JSON применяется язык JSON Path.
Выражение пути (JSON-path) определяет, какие значения из исходных данных нужно обработать.
Например, чтобы из объекта JSON {"value": 135} получить значение 135, нужно обратиться к нему по пути $.value. Для второго элемента массива "tags":["json","путь","значение"] используется путь $.tags[1] (индекс массива начинается с 0).
Другой пример показывает, что нужно использовать значения, которые больше 4:
SELECT JSON_QUERY(
'[{"value":4},{"value":6},{"value":42}]',
'lax $.value ? (@>4)' WITH ARRAY WRAPPER)
FROM RDB$DATABASE;
Для обрабатываемых значений может быть указан формат.
- FORMAT JSON — формат, при котором указанное значение будет обрабатываться как JSON, даже если фактически значение является строкой.
- FORMAT SQL — формат, при котором указанное значение будет преобразовано в JSON скаляр, даже если фактически значение является JSON. Двойные кавычки и слеши будут экранированы.
- FORMAT AUTO — формат, при котором все значения, созданные функциями генерации данных (JSON_OBJECT, JSON_OBJECTAGG, JSON_ARRAY, JSON_ARRAYAGG) или являющиеся результатом работы функции JSON_QUERY, будут обрабатываться как JSON. Все остальные значения будут преобразованы в JSON скаляр.
Кроме этого, предикат RETURNING предназначен для указания типа данных выходного значения функции. Практически весь функционал был использован в этом примере.
Подробнее можно ознакомиться с поддержкой SQL/JSON в документации РЕД База данных Руководство по SQL
Дата последнего изменения: 11.09.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.