具有多个值的oracle解码

时间:2012-07-29 13:54:35

标签: sql oracle

我想像下面的查询那样解码值:

select id,
       name,
       val 
  from table1 
 where id in (decode(1,0,0,1,('''4'',''5'',''6''')));

但我没有记录(记录实际可用)。 像('''4'',''5'',''6''')这样的解码功能是否有效?

我尝试但没有工作。这样做的其他选择吗?

1 个答案:

答案 0 :(得分:1)

我不确定我理解你在问什么。我最好的猜测是你要归还一个系列。例如,如果您定义NUM_TBL集合

CREATE TYPE num_tbl IS TABLE OF NUMBER;

然后,您可以执行以下操作,DECODE返回一组数字

SQL> ed
Wrote file afiedt.buf

  1  with x as (
  2    select level id
  3      from dual
  4   connect by level <= 10 )
  5  select *
  6    from x
  7   where id in (select *
  8*                 from table(decode( 1, 0, num_tbl(0), 1, num_tbl(2,3,4) )))
SQL> /

        ID
----------
         2
         3
         4