すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:JSON_EXTRACT

最終更新日:Oct 23, 2025

指定された json_path に基づいて、JSON 形式の文字列または JSON データ型の値から文字列または JSON データを抽出します。

構文

JSON_EXTRACT 関数には、次の 2 つのシグネチャがあります。

  • シグネチャ 1: 入力パラメーターは JSON データ型で、戻り値は JSON 型です。

    JSON JSON_EXTRACT(JSON <json_expr>, STRING <json_path>)
  • シグネチャ 2: SET odps.sql.bigquery.compatible=true; コマンドを実行して BigQuery 互換モードを有効にすると、この関数は JSON 形式の文字列を入力として受け入れ、STRING 型の値を返します。

    説明

    この場合、入力パラメーターが STRING 型の場合、この関数は GET_JSON_OBJECT と同じように動作します。

    STRING JSON_EXTRACT(STRING <json_string_expr>, STRING <json_path>)

パラメーター

パラメーター

説明

json_expr

必須。JSON 型の値。このパラメーターは、処理する JSON データを指定します。

json_string_expr

必須。STRING 型の値。このパラメーターは、JSON 形式の標準文字列を指定します。

json_path

必須。STRING 型の値。このパラメーターは、返す値の JSON パスを指定します。

戻り値

JSON 型または STRING 型の値を返します。次のルールが適用されます:

入力パラメーターの型

戻り値

入力パラメーターは JSON 型です

JSON 型の値を返します。

  • json_path が無効な場合、関数は NULL を返します。

  • json_path の形式が正しくない場合、関数はエラーを返します。

入力パラメーターは JSON 形式の文字列です

STRING 型の値を返します。

json_path が無効であるか、形式が正しくない場合、関数は NULL を返します。

説明

この場合、入力パラメーターが STRING 型の場合、この関数は GET_JSON_OBJECT と同じように動作します。

入力パラメーターが JSON 型の場合

  • 例 1: JSON オブジェクトからキー `a` の値を抽出します。

    SELECT JSON_EXTRACT(JSON '{"a":1, "b":2}', '$.a');

    次の結果が返されます。

    +-----+
    | _c0 |
    +-----+
    | 1   |
    +-----+
  • 例 2: 指定された JSON パスが無効であるか、宛先キーが存在しない場合、関数は NULL を返します。

    SELECT JSON_EXTRACT(JSON '{"a":1, "b":2}', '$.c');

    次の結果が返されます。

    +-----+
    | _c0 |
    +-----+
    | NULL |
    +-----+
  • 例 3: JSON パスの形式が正しくない場合、関数はエラーメッセージを返します。

    SELECT JSON_EXTRACT(JSON '{"a":1, "b":2}', '$a');

    次の結果が返されます。

    Invalid argument - Param json path $invalid_json_path is invalid

入力パラメーターが STRING 型の場合

STRING 型の入力パラメーターを使用するには、SET odps.sql.bigquery.compatible=true; コマンドを実行して BigQuery 互換モードを有効にする必要があります。

  • 例 1: BigQuery 互換モードでは、JSON 形式の文字列を入力として使用します。この関数は STRING 型の値を返します。

    SET odps.sql.bigquery.compatible=true;
    SELECT JSON_EXTRACT(
      '{"class": {"students": [{"name": "Jane"}]}}',
      '$') AS json_text_string;

    次の結果が返されます。

    +------------------------------------------+
    |          json_text_string                |
    +------------------------------------------+
    | {"class":{"students":[{"name":"Jane"}]}} |
    +------------------------------------------+
  • 例 2: BigQuery 互換モードでは、入力が JSON 形式の文字列で、json_path が無効であるか、形式が正しくない場合、関数は NULL を返します。

    SET odps.sql.bigquery.compatible=true;
    SELECT JSON_EXTRACT('{"a": null}', "$.b");

    次の結果が返されます。

    +------------+
    | _c0        | 
    +------------+
    | NULL       | 
    +------------+

関連関数

JSON_EXTRACT は JSON 関数です。他の JSON 関数の詳細については、「JSON 関数」をご参照ください。