sql >> データベース >  >> RDS >> Oracle

OracleのJSON_VALUE()関数

    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 ERRORliteralを返します エラーが発生したとき。 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 EMPTYliteralを返します 一致するものが見つからない場合。 literalのデータ型 この関数によって返される値のデータ型と一致する必要があります。

    例:

    SELECT 
        JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
    FROM DUAL;

    結果:

    Dang!

    この句を省略すると、エラー句によって、一致するものが見つからない場合に返される値が決まります。


    1. 行、ページ、テーブルのロックとは何ですか?そして、それらが取得されたとき?

    2. SUBDATE()の例– MySQL

    3. MySQLでDISTINCTまたはGROUPBYを選択すると、何が速くなりますか?

    4. 値が長すぎて文字が変化しない(N)