指定された 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 形式の文字列です | 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 関数」をご参照ください。