次の方法で共有


JSON_PATH_EXISTS (Transact-SQL)

適用対象: Sql Server 2022 (16.x) 以降のバージョン Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL データベース (Microsoft Fabric プレビュー)

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

Transact-SQL 構文表記規則

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