適用対象: Sql Server 2022 (16.x) 以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL データベース (Microsoft Fabric プレビュー)
JSON_PATH_EXISTS
構文は、入力 JSON 文字列に指定された SQL/JSON パスが存在するかどうかをテストします。
Syntax
JSON_PATH_EXISTS( value_expression , sql_json_path )
Arguments
value_expression
文字式。
sql_json_path
入力でテストする有効な SQL/JSON パス。
Return value
1
または0
またはNULL
の int 値を返します。 value_expressionまたは入力が SQL NULL
値の場合は、NULL
を返します。 指定した SQL/JSON パスが入力に存在する場合、または空でないシーケンスを返す場合は、1
を返します。 それ以外の場合は 0
を返します。
JSON_PATH_EXISTS
関数はエラーを返しません。
Examples
Example 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
Example 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
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
次の例では、配列内の少なくとも 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