sql - 在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
有人可以给我一个想法吗?
解决方案
如果您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
推荐阅读
- excel - 处理从另一个用户窗体调用的组合框
- javascript - Javascript 的 Chrome 开发者环境
- typescript - 排除/替换/别名生产中的某些模块构建在包裹中
- firebase - 如何在颤动中显示不包括登录用户的 Firebase 用户列表?
- node.js - 使用节点 dist/server.js 在服务器端运行 Angular 应用程序时出错
- ios - Swift Google Maps 选择标记相机动画错误
- react-native - 应用程序关闭后隐藏/取消 react-native Android Toast 的正确方法是什么
- javascript - 如何打开源 api
- html - 如何使子 div 与其动态大小的祖父母一样宽?
- flutter - 按另一个列表的顺序对第二个列表进行排序