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.