Compartilhar via


JSON_PATH_EXISTS (Transact-SQL)

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database in Microsoft Fabric

A JSON_PATH_EXISTS sintaxe testa se existe um caminho SQL/JSON especificado na cadeia de caracteres JSON de entrada.

Convenções de sintaxe de Transact-SQL

Syntax

JSON_PATH_EXISTS( value_expression , sql_json_path )

Arguments

value_expression

Uma expressão de caractere.

sql_json_path

Um caminho SQL/JSON válido a ser testado na entrada.

Valor de retorno

Retorna um valor int de 1 ou 0 ou .NULL Retorna NULL se o value_expression ou entrada for um valor SQL NULL . Retornará 1 se o caminho SQL/JSON fornecido existir na entrada ou retornará uma sequência não vazia. Retorna 0, caso contrário.

A função JSON_PATH_EXISTS não retorna erros.

Examples

Exemplo 1

O exemplo a seguir retorna 1, pois a cadeia de caracteres JSON de entrada contém o caminho SQL/JSON especificado. Este exemplo usa um caminho aninhado em que a chave está presente em outro objeto.

DECLARE @jsonInfo AS NVARCHAR (MAX);

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

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

Aqui está o conjunto de resultados.

1

Exemplo 2

O exemplo a seguir retorna 0 porque a cadeia de caracteres JSON de entrada não contém o caminho SQL/JSON especificado.

DECLARE @jsonInfo AS NVARCHAR (MAX);

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

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

Aqui está o conjunto de resultados.

0

Exemplo 3

O exemplo a seguir usa JSON_PATH_EXISTS() com um curinga:

DECLARE @jsonInfo AS NVARCHAR (MAX);

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

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

Aqui está o conjunto de resultados.

1

O seguinte procura pelo menos um elemento na matriz tem um objeto com chave towne localiza um.

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")

Aqui está o conjunto de resultados.

1

O seguinte procura pelo menos um elemento na matriz tem um objeto com chave town, mas não encontra nenhum.

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")

Aqui está o conjunto de resultados.

0