Поделиться через


JSON_PATH_EXISTS (Transact-SQL)

Применимо к: SQL Server 2022 (16.x) и более поздних версий Базы данныхSQL Azure SQL Azure, Управляемого экземпляра AzureSynapse AnalyticsSQL в Предварительной версии Microsoft Fabric

Синтаксис JSON_PATH_EXISTS проверяет, существует ли указанный путь SQL/JSON в входной строке JSON.

Соглашения о синтаксисе Transact-SQL

Syntax

JSON_PATH_EXISTS( value_expression , sql_json_path )

Arguments

value_expression

Символьное выражение.

sql_json_path

Допустимый путь SQL/JSON для тестирования во входных данных.

Return value

Возвращает целое значение 1 или 0NULL. Возвращает значение NULL SQL NULL, если value_expression или входные данные. Возвращает, 1 существует ли заданный путь SQL/JSON во входных данных или возвращает непустую последовательность. Возвращается 0 в противном случае.

Функция JSON_PATH_EXISTS не возвращает ошибки.

Examples

Example 1

В следующем примере возвращается значение 1, так как входная строка JSON содержит указанный путь SQL/JSON. В этом примере используется вложенный путь, в котором ключ присутствует в другом объекте.

DECLARE @jsonInfo AS NVARCHAR (MAX);

SET @jsonInfo = N'{"info":{"address":[{"town":"Paris"},{"town":"London"}]}}';

SELECT JSON_PATH_EXISTS(@jsonInfo, '$.info.address');

Вот результирующий набор.

1

Example 2

В следующем примере возвращается значение 0, так как входная строка JSON не содержит указанный путь SQL/JSON.

DECLARE @jsonInfo AS NVARCHAR (MAX);

SET @jsonInfo = N'{"info":{"address":[{"town":"Paris"},{"town":"London"}]}}';

SELECT JSON_PATH_EXISTS(@jsonInfo, '$.info.addresses');

Вот результирующий набор.

0

Example 3

В следующем примере используется JSON_PATH_EXISTS() подстановочный знак:

DECLARE @jsonInfo AS NVARCHAR (MAX);

SET @jsonInfo = N'{"info":{"address":[{"town":"Paris"},{"town":"London"}]}}';

SELECT JSON_PATH_EXISTS(@jsonInfo, '$.info.address[*].town'); -- Returns: 1

Вот результирующий набор.

1

В следующем примере по крайней мере один элемент в массиве содержит объект с ключом townи находит его.

SET @jsonInfo = N'{"info":{"address":[{"town":"Paris"},{"city":"London"}]}}';

SELECT JSON_PATH_EXISTS(@jsonInfo, '$.info.address[*].town'); -- Returns: 1  (at least one element in array has an object with key "town")

Вот результирующий набор.

1

В следующем примере по крайней мере один элемент в массиве содержит объект с ключом town, но не находит его.

SET @jsonInfo = N'{"info":{"address":[{"city":"Paris"},{"city":"London"}]}}';

SELECT JSON_PATH_EXISTS(@jsonInfo, '$.info.address[*].town'); -- Returns: 0 (no elements in array has an object with key "town")

Вот результирующий набор.

0