説明
JSON_VALUE()関数は、JSONデータの特定の部分を照会し、SQL値を返します。
構文
JSON_VALUE(value_expr [FORMAT JSON],
json_path_literal
[RETURNING NUMBER|DATE|TIMESTAMP|VARCHAR2|VARCHAR2[size],]
[ERROR|NULL|DEFAULT-literal ON ERROR]
[ERROR|NULL|DEFAULT-literal ON EMPTY]
[ERROR|NULL ON MISMATCH]);
構文の説明
JSON_VALUE()関数の構文は以下のとおりです:
[RETURNING NUMBER | DATE | TIMESTAMP | VARCHAR2 | VARCHAR2[size]]:オプション。返す値の型を指定します。ここで、VARCHAR2[size]は返す値の長さを制限するために使用されます。デフォルトではVARCHAR2(4000)返します。FORMAT JSON:オプション。value_exprのデータ型がBLOBの場合、この句を使用する必要があります。ERROR:式の実行中に型変換エラー以外のエラーが発生した場合の出力を制御し、処理結果を返します。EMPTY:照会中にNULL値が発生した場合、処理結果を返すように指定します。MISMATCH:型変換エラーの出力を制御します。
例
# デフォルトパラメータを使用する
obclient> SELECT JSON_VALUE('{"a":100}', '$.a') AS value FROM DUAL;
+-------+
| VALUE |
+-------+
| 100 |
+-------+
1 row in set
# ERROR句を使用する
obclient> SELECT JSON_VALUE( '{a:"cat"}','$.a.number()' NULL ON EMPTY DEFAULT -1 ON ERROR ) FROM DUAL;
+-------------------------------------------------------------------+
| JSON_VALUE('{A:"CAT"}','$.A.NUMBER()'NULLONEMPTYDEFAULT-1ONERROR) |
+-------------------------------------------------------------------+
| -1 |
+-------------------------------------------------------------------+
1 row in set
# DEFAULT句を使用する
obclient> SELECT JSON_VALUE('{firstname:"John"}', '$.lastname' DEFAULT 'No last name found' ON ERROR) AS "Last Name" FROM DUAL;
+--------------------+
| Last Name |
+--------------------+
| No last name found |
+--------------------+
1 row in set
# RETURNING句を使用する
obclient> SELECT JSON_VALUE('"2019-08-30, 1"', '$' RETURNING CLOB error on error) FROM DUAL;
+-----------------------------------------------------------+
| JSON_VALUE('"2019-08-30,1"','$'RETURNINGCLOBERRORONERROR) |
+-----------------------------------------------------------+
| 2019-08-30, 1 |
+-----------------------------------------------------------+
1 row in set