Oracle Databaseでは、JSON_VALUE()
関数は、JSONデータで指定されたスカラーJSON値を検索し、それをSQL値として返します。
構文
構文は次のようになります:
JSON_VALUE
( expr [ FORMAT JSON ], JSON_basic_path_expression
[ JSON_value_returning_clause ] [ JSON_value_on_error_clause ]
[ JSON_value_on_empty_clause ][ JSON_value_on_mismatch_clause ]
)
場所:
-
expr
クエリするJSONドキュメントです -
JSON_basic_path_expression
SQL/JSONパス式です。このパス式は、expr
を評価するために使用されます パス式に一致する、またはそれを満たすスカラーJSON値を見つけます。 -
JSON_query_returning_clause
関数によって返される値のデータ型と形式を指定します。 -
JSON_query_on_error_clause
特定のエラーが発生したときに返される値を指定します。 -
JSON_query_on_empty_clause
SQL/JSONパス式を使用してJSONデータを評価するときに一致するものが見つからない場合に返される値を指定します。 -
JSON_value_on_mismatch_clause
追加データ、欠落データ、タイプエラーなどのエラーケースに対して、無視、エラー、またはnullを指定するために使用できます。一般的に、またはケースバイケースで適用できます。
オプションの句の詳細な説明については、Oracleのドキュメントを参照してください。
例
JSON_VALUE()
がどのように行われるかを示す例を次に示します。 機能は動作します:
SELECT
JSON_VALUE('{a:1, b:2, c:3}', '$.b')
FROM DUAL;
結果:
2
この場合、$.b
を指定しました b
でスカラー値を返す 。
配列から値を返す例を次に示します。
SELECT
JSON_VALUE('["a", "b", "c"]', '$[2]')
FROM DUAL;
結果:
c
配列はゼロベースであるため、$[2]
3番目の配列要素を返します。
エラー処理
特定の種類のエラーが発生したときに何を返すかを指定するために使用できる3つの句があります。条項は次のとおりです。
-
NULL
ON
ERROR
–エラーが発生した場合はnullを返します。これがデフォルトです。 ERROR
ON
ERROR
–エラーが発生すると、適切なOracleエラーを返します。-
DEFAULT
literal
ON
ERROR
–literal
を返します エラーが発生したとき。literal
のデータ型 関数によって返される値のデータ型と一致する必要があります。
次に例を示します:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' NULL ON ERROR) AS "r1",
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Oops!' ON ERROR) AS "r2"
FROM DUAL;
結果:
r1 r2 _______ ________ null Oops!
これがERROR ON ERROR
です。 条項:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' ERROR ON ERROR)
FROM DUAL;
結果:
Error report - ORA-40462: JSON_VALUE evaluated to no value
上記のエラー句は、次のエラーを処理するためのものです。
- 最初の引数は、厳密または緩いJSON構文を使用した整形式のJSONデータではありません
- SQL / JSONパス式を使用してJSONデータを評価すると、非スカラー値が見つかります
- SQL / JSONパス式を使用してJSONデータを評価すると、一致するものが見つかりません。
JSON_value_on_empty_clause
を指定することで、このタイプのエラーの動作をオーバーライドできます。 。 - 戻り値のデータ型は、戻り値を保持するのに十分な大きさではありません
空の結果の処理
句を使用して、一致するものが見つからない場合に返される値を指定することもできます。この句を使用すると、このタイプのエラーに対して、エラー句で指定された結果とは異なる結果を指定できます。
これらの条項は次のとおりです。
-
NULL
ON
EMPTY
–一致するものが見つからない場合はnullを返します。 ERROR
ON
EMPTY
–一致するものが見つからない場合、適切なOracleエラーを返します。-
DEFAULT
literal
ON
EMPTY
–literal
を返します 一致するものが見つからない場合。literal
のデータ型 この関数によって返される値のデータ型と一致する必要があります。
例:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
FROM DUAL;
結果:
Dang!
この句を省略すると、エラー句によって、一致するものが見つからない場合に返される値が決まります。