次の方法で共有


JSON_PATH_EXISTS (Transact-SQL)

適用対象: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft FabricWarehouse の SQL 分析エンドポイント

指定した SQL/JSON パスが入力 JSON 文字列に存在するかどうかをテストします。

Transact-SQL 構文表記規則

構文

JSON_PATH_EXISTS( value_expression , sql_json_path )

引数

value_expression

文字式。

sql_json_path

入力でテストする有効な SQL/JSON パス。

戻り値

1または0またはNULLの int 値を返します。 NULL または入力が SQL 値の場合は NULL を返します。 指定した SQL/JSON パスが入力に存在する場合、または空でないシーケンスを返す場合は、1 を返します。 それ以外の場合は 0 を返します。

JSON_PATH_EXISTS 関数はエラーを返しません。

例 1

次の例では、入力 JSON 文字列に指定した SQL/JSON パスが含まれるため、1 が返されます。 この例では、キーが別のオブジェクトに存在する入れ子になったパスを使用します。

DECLARE @jsonInfo AS NVARCHAR (MAX);

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

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

結果セットを次に示します。

1

例 2

次の例では、入力 JSON 文字列に指定した SQL/JSON パスが含まれないため、0 が返されます。

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

次の例では、配列内の少なくとも 1 つの要素にキー townを持つオブジェクトがあり、1 つを検索します。

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

次の例では、配列内の少なくとも 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