Published on

December 12, 2022

Изучение функций JSON в SQL Server 2022

SQL Server 2022 полон новых функций и улучшений, и одной из областей, которая претерпела значительные улучшения, является обработка JSON в T-SQL. В этой статье мы рассмотрим некоторые из новых функций JSON, введенных в SQL Server 2022, и как они могут упростить работу с данными JSON.

JSON_OBJECT()

Функция JSON_OBJECT() – это мощное дополнение к SQL Server 2022, которое позволяет создавать текстовые объекты JSON из нуля или более выражений. Вместо ручного объединения строк для создания документа JSON вы можете предоставить список пар ключ-значение и позволить функции обработать сборку. Эта функция принимает переменное количество аргументов, каждый из которых представляет собой пару ключ-значение.

Например, вы можете использовать функцию JSON_OBJECT() для создания объекта JSON с двумя парами ключ-значение:

SELECT JSON_OBJECT('name' : 'John', 'age' : 30)

Это вернет следующий объект JSON:

{"name":"John","age":30}

Вы также можете использовать переменные вместо жестко заданных значений:

DECLARE @name VARCHAR(50) = 'John'
DECLARE @age INT = 30

SELECT JSON_OBJECT('name' : @name, 'age' : @age)

Функция JSON_OBJECT() также поддерживает оператор JSON NULL, который определяет, как обрабатываются значения NULL. Вы можете выбрать преобразование значений NULL в JSON NULL или их исключение из результирующего объекта JSON.

JSON_ARRAY()

Еще одна новая функция в SQL Server 2022 – JSON_ARRAY(), которая позволяет создавать допустимый массив JSON из входных данных. Подобно JSON_OBJECT(), JSON_ARRAY() принимает переменное количество аргументов и сжимает их в массив.

Например, вы можете использовать функцию JSON_ARRAY() для создания массива JSON с серией значений:

SELECT JSON_ARRAY(1, 2, 3, 4)

Это вернет следующий массив JSON:

[1,2,3,4]

Однако использование значений столбцов напрямую в функции JSON_ARRAY() может быть не так полезно, так как оно может не предоставлять содержательной информации. Оно чаще используется с скалярными значениями или когда вы хотите объединить несколько столбцов в массив.

JSON_PATH_EXISTS()

Функция JSON_PATH_EXISTS() предназначена для проверки наличия определенного пути в строке JSON. Она возвращает 1, если путь существует, 0, если он не существует, и NULL, если выражение является NULL.

Например, вы можете использовать функцию JSON_PATH_EXISTS() для проверки наличия определенного пути в JSON-документе:

DECLARE @json VARCHAR(MAX) = '{
  "name": "John",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "New York"
  }
}'

SELECT JSON_PATH_EXISTS(@json, '$.address.city')

Это вернет 1, указывая на то, что путь существует в JSON-документе.

Важно отметить, что пути JSON чувствительны к регистру, поэтому убедитесь, что используете правильный регистр при указании пути.

ISJSON()

Функция ISJSON(), хотя и не нова в SQL Server 2022, была улучшена в этой версии. Она позволяет проверить, является ли заданное строковое выражение допустимым JSON-документом или фрагментом.

В SQL Server 2022 функция ISJSON() принимает необязательный второй параметр, который указывает ожидаемый тип структуры JSON. Доступные варианты: VALUE, SCALAR, OBJECT и ARRAY.

Например, вы можете использовать функцию ISJSON() для проверки, является ли строковое выражение допустимым JSON-объектом:

DECLARE @json VARCHAR(MAX) = '{"name": "John", "age": 30}'

SELECT ISJSON(@json, OBJECT)

Это вернет 1, указывая на то, что строковое выражение является допустимым JSON-объектом.

Указав ожидаемый тип структуры JSON, вы можете выполнять более конкретную проверку данных JSON.

Заключение

Обработка JSON стала все более важной в современных базах данных, и SQL Server 2022 вводит несколько новых функций, чтобы упростить работу с данными JSON. Функции JSON_OBJECT(), JSON_ARRAY(), JSON_PATH_EXISTS() и ISJSON() предоставляют мощные инструменты для создания, манипулирования и проверки документов JSON в T-SQL.

Будь вы разработчиком, работающим с данными JSON, или администратором базы данных, оценивающим обновление до SQL Server 2022, эти новые функции JSON стоит изучить, чтобы улучшить ваш опыт работы с SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.