暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 从JSON文档中提取属性

askTom 2018-06-13
256

问题描述

大家好,

在JSON数组访问和正常列有问题,如下所示,

(Reports : 
[( 'reportname': 'abc',
    'Sort order':'abc',
    'sortlabel':'name',
     'columns' :[ ( 'component' : 'q_test1', 
                              'column_order' : '1'
                             ),
                          ( 'component' : 'q_test2', 
                              'column_order' : '2'
                             )]
 )])


如何在单个查询中访问它,以及我们需要在选择列表中显示的列顺序。

请帮帮忙。

提前谢谢。

谢谢
马诺。

专家解答

最简单的方法通常是点符号,例如

SQL> create table t ( j varchar2(1000), constraint chk check ( j is json ));

Table created.

SQL>
SQL> insert into t values ('
  2  {Reports :
  3  [{ "reportname": "abc",
  4      "Sort order":"abc",
  5      "sortlabel":"name",
  6       "columns" :[ { "component" : "q_test1",
  7                                "column_order" : "1"
  8                               },
  9                            { "component" : "q_test2",
 10                                "column_order" : "2"
 11                               }]
 12   }]}');

1 row created.

SQL>
SQL> select
  2    t.j.Reports."reportname" n,
  3    t.j.Reports."Sort order" s,
  4    t.j.Reports."columns"."component" c
  5  from t t;

N                              S                              C
------------------------------ ------------------------------ ---------------------------
abc                            abc                            ["q_test1","q_test2"]

1 row selected.


但是你有很多不同的选择。有关示例和说明,请参见此处

https://docs.oracle.com/database/121/ADXDB/json.htm#ADXDB6246

https://docs.oracle.com/database/121/SQLRF/functions091.htm#SQLRF56718

https://docs.oracle.com/database/121/SQLRF/functions092.htm#SQLRF56973

https://docs.oracle.com/database/121/SQLRF/functions093.htm#SQLRF56668
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论