JSON_PATH_EXISTS (Transact-SQL)

适用于:MicrosoftFabric 预览版中的 SQL Server 2022 (16.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics SQL 数据库

语法 JSON_PATH_EXISTS 测试输入 JSON 字符串中是否存在指定的 SQL/JSON 路径。

Transact-SQL 语法约定

Syntax

JSON_PATH_EXISTS( value_expression , sql_json_path )

Arguments

value_expression

字符表达式。

sql_json_path

用于在输入中测试的有效 SQL/JSON 路径。

Return value

返回 int 值 10NULL。 返回NULLvalue_expression或输入是否为 SQL NULL 值。 如果输入中存在给定的 SQL/JSON 路径,则返回 1,或者返回非空序列。 否则将返回 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