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_expressionSQL/JSONパス式です。このパス式は、exprを評価するために使用されます パス式に一致する、またはそれを満たすスカラーJSON値を見つけます。 -
JSON_query_returning_clause関数によって返される値のデータ型と形式を指定します。 -
JSON_query_on_error_clause特定のエラーが発生したときに返される値を指定します。 -
JSON_query_on_empty_clauseSQL/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つの句があります。条項は次のとおりです。
-
NULLONERROR–エラーが発生した場合はnullを返します。これがデフォルトです。 ERRORONERROR–エラーが発生すると、適切なOracleエラーを返します。-
DEFAULTliteralONERROR–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を指定することで、このタイプのエラーの動作をオーバーライドできます。 。 - 戻り値のデータ型は、戻り値を保持するのに十分な大きさではありません
空の結果の処理
句を使用して、一致するものが見つからない場合に返される値を指定することもできます。この句を使用すると、このタイプのエラーに対して、エラー句で指定された結果とは異なる結果を指定できます。
これらの条項は次のとおりです。
-
NULLONEMPTY–一致するものが見つからない場合はnullを返します。 ERRORONEMPTY–一致するものが見つからない場合、適切なOracleエラーを返します。-
DEFAULTliteralONEMPTY–literalを返します 一致するものが見つからない場合。literalのデータ型 この関数によって返される値のデータ型と一致する必要があります。
例:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
FROM DUAL; 結果:
Dang!
この句を省略すると、エラー句によって、一致するものが見つからない場合に返される値が決まります。