暂无图片
在Oracle中如何从一段JSON中获取某个JSON的指定值
我来答
分享
Error
2022-04-21
在Oracle中如何从一段JSON中获取某个JSON的指定值

请问,在oracle 中如何获取如下sql中的 age不为空的内容 select jsonpkg.getarrval('[{"name":"小明","age":"18"},{"name":"张三","age":""}]') from dual 获取其中age不为空的内容。 结果应是:{"name":"小明","age":"18"}

 sql 该如何去写?

个人想法是通过指向json中的某个字段,把它当作列来作为条件 不知道这样是否合理。求解答。

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
DarkAthena

你是想要下面这个么?19c及以上支持

select json_object(*) from json_table('[{"name":"小明","age":"18"},{"name":"张三","age":""}]', '$[*]' columns("name" varchar2(20) path '$.name', "age" varchar2(20) path '$.age')) p where "age" is not null;
复制

image.png

12c及以上要这么写

select json_object( KEY 'name' is "name",key 'age' is "age") from json_table('[{"name":"小明","age":"18"},{"name":"张三","age":""}]', '$[*]' columns("name" varchar2(20) path '$.name', "age" varchar2(20) path '$.age')) p where "age" is not null;
复制

image.png

11g及以下原生不支持json,需要使用到第三方组件,比如pljson,方式也差不多,其实就是先转换成表,过滤,再转回去json,如果记录有多行,还需要再进行一次聚合

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
Error
题主
2022-04-22
非常感谢。问题已经解决啦。
回答交流
Markdown


请输入正文
提交
相关推荐
oracle 11g rac 升级19c报错
回答 5
我最近也在弄找个找个补丁找半天。。。
oracle物化视图手动刷新报错
回答 1
已采纳
得用物化视图所属的用户执行吧?或者指定视图前指定一下用户?
oracle 19c rac的alert日志显示统计信息任务报错?怪了。
回答 3
已采纳
问题找到,原来用户自己加了全局不可编辑触发器,禁止了drop和truncate操作。把触发器SYSTEM.TRGDDLDENYTRUNCATE禁用后恢复正常。
oracle 19c rac vip和csan问题
回答 1
查安装文档,有问题
oracle19c创建完用户登录不了一直报ORA-01017: 用户名/口令无效; 登录被拒绝
回答 6
请问最终如何解决的呢?我碰到同样的问题
Patch 30869156 rollback (pdb HR92XXX): WITH ERRORS
回答 1
18c开始添加了hadoop相关的功能,你可以试试先单独把这个脚本打了cathive1.sql该脚本仅在Linux和SolarisSPARC上调用,而Windows不调用,导致补丁中其他的相关的对象无
生产环境RAC一般要不要启用MGMTDB?
回答 2
已采纳
简单,如果你使用oem或者exadata,你的生产rac部署的主机资源相对充足也没有一个合适的监控等,那么可以开启配合OEM对RAC集群做一个统一监控和管理等。如果不用oem或非exadata,那就完
19c grant select on sys.user$后还是权限报错
回答 4
最小化权限原则,到对应的容器数据库下grantselectonsys.user$toscott;就行。
oracle 19c gc buffer busy release 问题
回答 4
Bug30381614RACDatabaseSessionsWaitingforaLongTimeon'gcbufferbusyrelease'(DocID30381614.8)
oracle 19c 其中一个节点不能获取参数文件
回答 8
用grid用户,asmcmd进去看看这个文件存在不存在
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~