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

OracleのJSON_OBJECT()関数

    Oracle Databaseでは、JSON_OBJECT() 関数は、一連のキーと値のペアまたは1つのオブジェクトタイプインスタンスからJSONオブジェクトを作成します。

    構文

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

    JSON_OBJECT
      ( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
         ,]...
        [ JSON_on_null_clause ] [ JSON_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_OBJECT(KEY 'score' VALUE 37) FROM DUAL;

    結果:

    {"score":37}

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

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

    結果:

    {"score":37}

    複数のキー/値のペア

    複数のキーと値のペアを使用した例を次に示します。

    SELECT JSON_OBJECT(
        KEY 'fname' VALUE 'Homer',
        KEY 'lname' VALUE 'Escobar',
        KEY 'score' VALUE 237
        ) 
    FROM DUAL;

    結果:

    {"fname":"Homer","lname":"Escobar","score":237}

    ネストされたJSON

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

    例:

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

    結果:

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

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

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

    結果:

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

    データベースの例

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

    SELECT *
    FROM regions;

    結果:

       REGION_ID               REGION_NAME 
    ____________ _________________________ 
               1 Europe                    
               2 Americas                  
               3 Asia                      
               4 Middle East and Africa    

    これは同じクエリですが、選択した列がJSON_OBJECT()に渡されます 機能:

    SELECT JSON_OBJECT(*) 
    FROM regions;

    結果:

    {"REGION_ID":1,"REGION_NAME":"Europe"}                    
    {"REGION_ID":2,"REGION_NAME":"Americas"}                  
    {"REGION_ID":3,"REGION_NAME":"Asia"}                      
    {"REGION_ID":4,"REGION_NAME":"Middle East and Africa"}

    そして、ここでは、関数に渡される列が1つだけです:

    SELECT JSON_OBJECT(region_name) 
    FROM regions;

    結果:

    {"region_name":"Europe"}                    
    {"region_name":"Americas"}                  
    {"region_name":"Asia"}                      
    {"region_name":"Middle East and Africa"} 

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


    1. Java Oracle localhost接続エラー(ORA-12505)

    2. postgresqlにnanosecでタイムスタンプを保存する最もエレガントな方法は何ですか?

    3. エンベロープを取得します。つまり、重複する期間

    4. PostgreSQLLIKE句の正規表現