传递多个值的SQL NVL函数

  • 本文关键字:SQL NVL 函数 sql oracle erp
  • 更新时间 :
  • 英文 :


我有一个要求,我需要将参数设置为文本,并且为了传递多个值,用户可以使用逗号(,(给出多个值如果用户不给出任何值,它将返回所有值。。。。例如,其中阶段1 IN(:阶段1(在这里,我们可以paas多个值,但不能为空。。。。。。。。如果我在这里使用nvl,它将给出未与nvl 一起使用的错误bcoz IN子句

如果您可以将逗号分隔的列表转换为行,那么普通的子查询就可以完成这项工作,例如,如果您的表或数据如下:

create table t as 
select '123,456,789' acct 
from dual

然后你可以通过转换成行

select substr(acct,
nvl(lag(loc) over ( order by loc),0)+1,
loc-nvl(lag(loc) over ( order by loc),0)-1
) list_as_rows
from (
select distinct (instr(acct||',',',',1,level)) loc
from t
connect by level <= length(acct)-length(replace(acct,','))+1
), t
RESULT
-------
123
456
789

现在它变成了

选择。。。来自my_table其中col在(…上面的选择(中

最新更新