适用于: SQL Server 2022 (16.x)
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric
Warehouse Microsoft Fabric 中的 SQL 分析终结点
测试输入 JSON 字符串中是否存在指定的 SQL/JSON 路径。
语法
JSON_PATH_EXISTS( value_expression , sql_json_path )
参数
value_expression
字符表达式。
sql_json_path
用于在输入中测试的有效 SQL/JSON 路径。
返回值
返回 int 值 1
或 0
NULL
。 如果 value_expressionNULL
或输入为 SQL 值,则返回 NULL
。 如果输入中存在给定的 SQL/JSON 路径,则返回 1
,或者返回非空序列。 否则将返回 0
。
JSON_PATH_EXISTS
函数不返回错误。
示例
示例 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
示例 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
示例 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