如何使用Oracle 12c获取存储为CLOB的JSON数组中的元素数? [英] How to get the number of elements in a JSON array stored as CLOB with Oracle 12c?

查看:462
本文介绍了如何使用Oracle 12c获取存储为CLOB的JSON数组中的元素数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Java类A作为A_DOC存储在数据库的clob列中.

I'm storing a java class A as A_DOC in a clob column in my database.

A的结构如下:

{

id : 123

var1: abc

subvalues : [{

 id: 1 
 value : a

 },
{
id: 1

value :b
}

...

}
]}

我知道我可以做类似的事情

I know I can do things like

select json_query(a.A_DOC, '$.subvalues.value') from table_name a;

,依此类推,但是我正在寻找一种通过sql查询计数subvalues数组中元素数量的方法.这可能吗?

and so on, but how I'm looking for a way to count the number of elements in the subvalues array through an sql query. Is this possible?

推荐答案

您可以使用JSON_TABLE:

You can use JSON_TABLE:

SELECT
    id, var1, count(sub_id) subvalues
FROM
    JSON_TABLE (
        to_clob('{ id: 123, var1: "abc", subvalues : [{ id: 1, value: "a", }, { id: 2, value: "b" } ]}'),
        '$'
        COLUMNS (
            id NUMBER PATH '$.id',
            var1 VARCHAR PATH '$.var1',
            NESTED PATH '$.subvalues[*]'
            COLUMNS (
                sub_id NUMBER PATH '$.id'
            )
        )
    )
GROUP BY id, var1 

这篇关于如何使用Oracle 12c获取存储为CLOB的JSON数组中的元素数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆