暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 读取输入数组并在select中排除的过程

askTom 2018-03-08
248

问题描述

嗨,
在db proc中访问json数组参数有疑问下面是输入json数组的示例。

'{"List":["name1","name2"]}'
或者
[“name1”,“name2”]

如何访问这种类型的输入数据,并且需要对这些数据应用过滤器。表示必须在select查询中排除此名称。

从emp中选择 * 名称不在 (name1,name2);

期望从输入参数中读取名称并将该名称应用于过滤器。

Please help to solve this problem. it would be great if you could give solution f或者this.
谢谢,
Manoj

专家解答

您可以使用JSON_table将JSON数组转换为行:

with rws as (
  select '{"List":["Steven","Nancy"]}' names from dual
) 
  select *
  from   rws, json_table (
    names, '$' columns (
      nested path '$.List[*]' columns (
        nm path '$'
      )
    )
  ) j;

NAMES                         NM       
{"List":["Steven","Nancy"]}   Steven   
{"List":["Steven","Nancy"]}   Nancy 
复制


嵌套路径子句指示它将数组的每个元素转换为行。

一旦你有了这个,你可以像常规表一样加入它:

with rws as (
  select '{"List":["Steven","Nancy"]}' names from dual
) 
  select j.nm, e.employee_id
  from   rws, json_table (
    names, '$' columns (
      nested path '$.List[*]' columns (
        nm path '$'
      )
    )
  ) j
  join   hr.employees e
  on     e.first_name = j.nm;

NM       EMPLOYEE_ID   
Steven             100 
Steven             128 
Nancy              108 
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论