首页 > 解决方案 > 在oracle sql中获取数组大小

问题描述

我在 oracle 中有一个具有此定义的表


    create table PARAM(
       ID VARCHAR(30),
       DOCUMENT   blob
    )

Document以json格式存储。

{"id":"value","parameters":[{...},{...},{...}]}

如何在sql中提取数组参数的大小?

我需要为每个表记录提取数组大小,然后对所有这些值求和。

前任:

第 1 步:


    ID    ARRAY_SIZE
    ----  ----------
    1     10
    2     0
    3     3

2步:


    TOTAL_RECORDS   TOTAL_ARRAYS_SIZE
    -------------   -----------------
    3               13

有人可以给我一个想法吗?

标签: sqlarraysjsonoracle

解决方案


如果您is json对列有检查约束,则可以使用该size()方法获取数组中的数字元素:

create table t (
  c1 int, 
  c2 varchar2(100) 
    check ( c2 is json ) 
);

insert into t values ( 1, '{ "arr" : [1, 2, 3] }');
insert into t values ( 2, '{ "arr" : [1, 2, 3, 4, 5] }');

select c1, t.c2.arr.size() from t t;

C1    T.C2.ARR.SIZE()   
 1                  3 
 2                  5 

推荐阅读