Функция ISJSON() SQL-сервера

В этом руководстве вы узнаете, как использовать функцию ISJSON() SQL Server для проверки того, содержит ли строка допустимый JSON.

Введение в функцию ISJSON() SQL Server

Функция ISJSON() проверяет, содержит ли строка допустимый JSON.

Вот синтаксис функции ISJSON():

ISJSON( expression [, json_type_constraint] )

В этом синтаксисе:

  • выражение — это проверяемая строка, которая может быть строкой-литералом, переменной или столбцом таблицы.
  • json_type_constraint — тип JSON для проверки выражения. Допустимые значения json_type_constraint: VALUE, ARRAY, OBJECT или SCALAR. json_type_constraint необязателен. Если вы опустите json_type_constraint, функция проверит, являются ли входные данные объектом JSON или массивом.

В следующей таблице показано подробное значение каждого значения:

Ценить Значение
ЦЕНИТЬ Проверьте, является ли входная строка допустимым значением JSON, которое может быть объектом JSON, массивом, числом, строкой, логическим значением или значением null.
МНОЖЕСТВО Проверьте, является ли входная строка допустимым массивом JSON.
ОБЪЕКТ Проверьте, является ли входная строка допустимым объектом JSON.
СКАЛЯРНЫЙ Проверьте, является ли входная строка скалярным значением.

Функция ISJSON() возвращает 1, если строка содержит допустимый JSON, в противном случае — 0. Если выражение равно null, функция ISJSON() возвращает null.

Примеры функций ISJSON() SQL Server

Давайте рассмотрим несколько примеров использования функции ISJSON().

1) Примеры базовых функций SQL Server ISJSON()

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

SELECT ISJSON('{}') AS result;

Выход:

result
------
1

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

SELECT ISJSON('[]') AS result;

Выход:

result
------
1

Следующий оператор возвращает 0, поскольку строка не содержит допустимого JSON:

SELECT ISJSON('Hi') AS result;

Выход:

result
------
0

Чтобы проверить, является ли строка «Hi» скалярным значением JSON, необходимо использовать SCALAR json_constraint_type следующим образом:

SELECT ISJSON('"Hi"',SCALAR) AS result;

Выход:

result
------
1
(1 row)

Следующий пример возвращает 0, поскольку ключ объекта JSON заключен в одинарные кавычки:

SELECT ISJSON('{''age'': 10}') result;

Выход:

result
------
0

2) Использование функции ISJSON() SQL Server с табличными данными

Сначала создайте новую таблицу с названием settings:

CREATE TABLE settings(
   id INT IDENTITY PRIMARY KEY,
   options NVARCHAR(MAX) NOT NULL
);

В столбце параметров будут храниться данные JSON.

Во-вторых, вставьте несколько строк в таблицу настроек:

INSERT INTO settings(options)
VALUES
 ('{"theme": "dark", "fontSize": 14, "language": "en"}'),
 ('{"theme": "light", "fontSize": 12, "language": "fr"}'),
 ('{"theme": "auto, "fontSize": 16, "language": "de"}');

В-третьих, проверьте данные JSON в столбце параметров таблицы настроек с помощью функции ISJSON():

SELECT 
  id, 
  options, 
  ISJSON(options) valid 
FROM 
  settings;

Выход:

id | options                                              | valid
------------------------------------------------------------------
1  | {"theme": "dark", "fontSize": 14, "language": "en"}  | 1
2  | {"theme": "light", "fontSize": 12, "language": "fr"} | 1
3  | {"theme": "auto, "fontSize": 16, "language": "de"}   | 0

Краткое содержание

  • Используйте функцию ISJSON(), чтобы проверить, содержит ли строка допустимый JSON.
Мирослав С.

Автор статей, ИБ-специалист