Sql oracle使用多个值进行解码

Sql oracle使用多个值进行解码,sql,oracle,Sql,Oracle,我想像下面的查询一样解码该值: select id, name, val from table1 where id in (decode(1,0,0,1,('''4'',''5'',''6'''))); 但我没有收到任何实际可用的记录。 像“4,5,6”这样的解码功能是否有效 我试过了,但没有成功。有其他选择吗?我不确定我是否理解你的要求。我的猜测是你想退回一个收藏。例如,如果定义NUM_TBL集合 CREATE TYPE num_tbl IS TABLE

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

select id,
       name,
       val 
  from table1 
 where id in (decode(1,0,0,1,('''4'',''5'',''6''')));
但我没有收到任何实际可用的记录。 像“4,5,6”这样的解码功能是否有效


我试过了,但没有成功。有其他选择吗?

我不确定我是否理解你的要求。我的猜测是你想退回一个收藏。例如,如果定义NUM_TBL集合

CREATE TYPE num_tbl IS TABLE OF NUMBER;
然后你可以这样做,解码返回一组数字

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

你想干什么?你能举一个有效的例子吗?很难找到答案。。。请描述数据和所需结果。对于我的解码函数,当“表达式”等于“搜索”时,我需要提供多个“结果”值。解码搜索、值0、值0、值1、值1、值2、值2……您的问题不可理解。如果你想要一个答案,你必须清楚地解释你想要达到的目标。最简单的方法是向我们提供一些输入数据和所需的输出数据,最好是一些转换规则。