Compartir a través de


JSON_PATH_EXISTS (Transact-SQL)

Aplica a: SQL Server 2022 (16.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database in Microsoft Fabric

La JSON_PATH_EXISTS sintaxis comprueba si existe una ruta de acceso SQL/JSON especificada en la cadena JSON de entrada.

Convenciones de sintaxis de Transact-SQL

Syntax

JSON_PATH_EXISTS( value_expression , sql_json_path )

Arguments

value_expression

Una expresión de caracteres.

sql_json_path

Una ruta de acceso SQL/JSON válida que lleva a la prueba de la entrada.

Valor devuelto

Devuelve un valor int de 1 o 0NULL. Devuelve NULL si el value_expression o la entrada es un valor SQL NULL . Devuelve 1 si la ruta de acceso SQL/JSON especificada existe en la entrada o devuelve una secuencia no vacía. De lo contrario, devuelve 0.

La función JSON_PATH_EXISTS no devuelve errores.

Examples

Ejemplo 1

En el ejemplo siguiente se devuelve 1, ya que la cadena JSON de entrada contiene la ruta de acceso SQL/JSON especificada. En este ejemplo se usa una ruta de acceso anidada donde la clave está presente en otro objeto.

DECLARE @jsonInfo AS NVARCHAR (MAX);

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

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

Este es el conjunto de resultados.

1

Ejemplo 2

En el ejemplo siguiente se devuelve 0, ya que la cadena JSON de entrada no contiene la ruta de acceso SQL/JSON especificada.

DECLARE @jsonInfo AS NVARCHAR (MAX);

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

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

Este es el conjunto de resultados.

0

Ejemplo 3

En el ejemplo siguiente se usa JSON_PATH_EXISTS() con un carácter comodín:

DECLARE @jsonInfo AS NVARCHAR (MAX);

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

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

Este es el conjunto de resultados.

1

A continuación se busca al menos un elemento de la matriz que tiene un objeto con la clave towny busca uno.

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

Este es el conjunto de resultados.

1

A continuación se busca al menos un elemento de la matriz tiene un objeto con clave town, pero no encuentra ninguno.

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

Este es el conjunto de resultados.

0