【问题标题】:How to add json object from a nested json into a db-column in Oracle DB如何将嵌套 json 中的 json 对象添加到 Oracle DB 中的 db 列中
【发布时间】:2018-10-03 07:33:48
【问题描述】:

我需要将嵌套 json 文件中的 json 插入 Oracle 的列中。比如在下面的json中

{
"name":"John",
"age":30,
"cars": {
    "car1":"Ford",
    "car2":"BMW",
    "car3":"Fiat"
}
}

我需要存储整个json:

"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
}

在 db 列中。我怎样才能做到这一点?我正在使用 Oracle DB。


我已经尝试了以下查询,但它不起作用。 (说 clob 不是有效的数据类型)

select x.*
    from json_tab t,
             json_table (t.json_data, '$.[*]' 
         COLUMNS
            name  VARCHAR2(4000) PATH '$.name',
            cars clob PATH '$.cars[*]') x;

我已经尝试过使用 varchar2 数据类型,但它选择了 null。

【问题讨论】:

    标签: sql json oracle11g sql-insert


    【解决方案1】:

    假设您使用 oracle 12c,请尝试使用此查询来获得您需要的结果。

    select x.*, json_object(key 'cars' value x.cars format json) cars_json 
        from json_tab t, 
            json_table(t.json_data, '$'
                     COLUMNS
                       name  VARCHAR2(4000) PATH '$.name',
                       cars VARCHAR(4000) format json PATH '$.cars[*]') as x;
    

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 2021-12-27
      • 2013-10-11
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多