適用対象: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric
Warehouse の SQL 分析エンドポイント
指定した SQL/JSON パスが入力 JSON 文字列に存在するかどうかをテストします。
構文
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