対象者: SQL Server 2022 (16.x) および以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database in 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 パス。
戻り値
1または0またはNULLの int 値を返します。 value_expressionまたは入力が SQL NULL値の場合は、NULLを返します。 指定した SQL/JSON パスが入力に存在する場合、または空でないシーケンスを返す場合は、1 を返します。 それ以外の場合は 0 を返します。
JSON_PATH_EXISTS 関数はエラーを返しません。
Examples
例 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