在Oracle 12c中将查询的输出转换为json

时间:2019-01-16 15:27:46

标签: oracle plsql oracle-sqldeveloper

我有一个查询,输出如下:

    1  2 3 4 5 6 7 8 9 10 11 12 13
    -  - - - - - - - - -   -  - -    
    40 20 22 10 0 0 0 0 0 0 0 0 0

我想将输出转换为一列,该列如下所示:

    output
    -----------
 {"1":40,"2":20,"3":22,"4":10,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0}

2 个答案:

答案 0 :(得分:3)

您可以在SQL Developer中使用JSON格式的“技巧”。

enter image description here

完整情况:

CREATE TABLE JSON_SO (
    "1"   INTEGER,
    "2"   INTEGER,
    "3"   INTEGER,
    "4"   INTEGER,
    "5"   INTEGER,
    "6"   INTEGER
);

INSERT INTO JSON_SO VALUES (
    40,
    20,
    22,
    10,
    0,
    0
);

select /*json*/ * from json_so;

以及使用F5执行时的输出(以脚本执行):

{
   "results":[
      {
         "columns":[
            {
               "name":"1",
               "type":"NUMBER"
            },
            {
               "name":"2",
               "type":"NUMBER"
            },
            {
               "name":"3",
               "type":"NUMBER"
            },
            {
               "name":"4",
               "type":"NUMBER"
            },
            {
               "name":"5",
               "type":"NUMBER"
            },
            {
               "name":"6",
               "type":"NUMBER"
            }
         ],
         "items":[
            {
               "1":40,
               "2":20,
               "3":22,
               "4":10,
               "5":0,
               "6":0
            }
         ]
      }
   ]
}

请注意,JSON输出是通过SQL Developer在客户端进行的(这也适用于SQLcl),我使用https://jsonformatter.curiousconcept.com/

格式化了JSON输出以在此处显示。

这将适用于SQL Developer支持的任何版本的Oracle数据库,而Oracle数据库12cR2中引入了JSON_OBJECT()函数-如果您希望DB格式将结果设置为JSON。

答案 1 :(得分:2)

如果希望Oracle DB服务器以JSON返回结果,则可以执行以下查询-

 SELECT JSON_OBJECT ('1' VALUE col1, '2' VALUE col2, '3' VALUE col3) FROM table