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

OracleのJSON_OBJECTAGG()関数

    Oracle Databaseでは、JSON_OBJECTAGG() 関数は、キーと値のペアからJSONオブジェクトを作成します。

    通常、プロパティキー、プロパティ値、またはその両方はSQL式の列です。

    構文

    構文は次のようになります:

    JSON_OBJECTAGG
      ( [ KEY ] string VALUE expr [ FORMAT JSON ]
        [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
        [ STRICT ] [ WITH UNIQUE KEYS ]
      )

    場所:

    • [ KEY ] key_expr VALUE val_expr プロパティのキーと値のペアを指定します。
    • FORMAT JSON 入力文字列がJSONであるため、出力で引用符で囲まれないことを示します。
    • JSON_on_null_clause exprのときに使用する動作を指定します nullに相当します(つまり、出力にnull値を含めるか、含めないかのいずれかです)。
    • JSON_returning_clause 戻り値のタイプを指定します。
    • STRICT JSON生成関数の出力が正しいJSONであるかどうかを確認します。チェックに失敗すると、構文エラーが発生します。
    • WITH UNIQUE KEYS 生成されたJSONオブジェクトが一意のキーを持つことを保証します。

    これがどのように機能するかを示す例です:

    SELECT JSON_OBJECTAGG(KEY 'score' VALUE 37) FROM DUAL;

    結果:

    {"score":37}

    KEY 一部はオプションであるため、以下でも同じ結果が得られます。

    SELECT JSON_OBJECTAGG('score' VALUE 37) FROM DUAL;

    結果:

    {"score":37}

    ネストされたJSON

    渡す値の1つにJSONが含まれている場合は、FORMAT JSONを使用できます。 JSONが含まれていることを指定する引数であり、出力で引用符で囲まないようにする必要があります。

    例:

    SELECT JSON_OBJECTAGG(
        KEY 'details' 
        VALUE '{"name": "Peter", "score": 64}' 
        FORMAT JSON
        ) 
    FROM DUAL;

    結果:

    {"details":{"name": "Peter", "score": 64}}

    FORMAT JSONを削除するとどうなりますか パート:

    SELECT JSON_OBJECTAGG(
        KEY 'details' 
        VALUE '{"name": "Peter", "score": 64}'
        ) 
    FROM DUAL;

    結果:

    {"details":"{\"name\": \"Peter\", \"score\": 64}"} 

    データベースの例

    JSON_OBJECTAGG() 関数は通常、データベース列の値に基づいてJSONドキュメントを生成するために使用されます。

    次のクエリを実行するとします。

    SELECT *
    FROM jobs
    WHERE min_salary > 9000;

    結果:

        JOB_ID                        JOB_TITLE    MIN_SALARY    MAX_SALARY 
    __________ ________________________________ _____________ _____________ 
    AD_PRES    President                                20000         40000 
    AD_VP      Administration Vice President            15000         30000 
    SA_MAN     Sales Manager                            10000         20000

    JSON_OBJECTAGG()の使用方法の例を次に示します。 上記の2つの列からJSONドキュメントを生成する関数:

    SELECT JSON_OBJECTAGG(KEY job_id VALUE min_salary) 
    FROM jobs
    WHERE min_salary > 9000;

    結果:

    {"AD_PRES":20000,"AD_VP":15000,"SA_MAN":10000}

    この場合、job_id 列がキーであり、min_salary 列は値です。

    この関数の詳細については、Oracleのドキュメントを参照してください。


    1. Ubuntu12.04でphpMyAdminを使用してMySQLをインストールする方法

    2. oratop

    3. PHPとMySQLでタイムゾーンを設定する

    4. リレーショナルデータベースのカスタムフィールドのデザインパターン