我需要为报表工具中的提示编写sql。我在变量中得到多个值的列表,这些变量之间用“-”分隔,并且这些值的数量可以变化。(例如,1。
现在我需要用这种形式的oracle写sql(逻辑上)
select something from somewhere where someColumn in 'abc' -- use substr to extract abc or someColumn in 'def' -- use substr to extract def or ...till we don't find '-'.
我不能使用plsql进行查询。我可能不知道要使用在plsql中选择的变量,或者报告工具不支持该变量。
提前致谢。
尝试
select something from somewhere where someColumn in (select regexp_substr('abc-def-xyz','[^-]+', 1, level) from dual connect by regexp_substr('abc-def-xyz', '[^-]+', 1, level) is not null);
概括(考虑您的字段以“-”分隔)
select something from somewhere where someColumn in (select regexp_substr(variable,'[^-]+', 1, level) from dual connect by regexp_substr(variable, '[^-]+', 1, level) is not null);
基本上,子查询的输出如下所示-
SQL> select regexp_substr('abc-def-xyz','[^-]+', 1, level) value from dual connect by regexp_substr('abc-def-xyz', '[^-]+', 1, level) is not null; VALUE -------------------------------- abc def xyz