我有一个要求,我需要将参数设置为文本,并且为了传递多个值,用户可以使用逗号(,(给出多个值如果用户不给出任何值,它将返回所有值。。。。例如,其中阶段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在(…上面的选择(中