暂无图片
在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
暂无图片
Error
题主
2022-04-22
非常感谢。问题已经解决啦。
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏