是否可以在Oracle SQL中使用CASE和ANY()?

时间:2013-08-27 10:00:13

标签: sql oracle case conditional-statements

有可能实现我在下面的SQL查询中尝试做的事情吗? 我想检查项目名称是否与给定列表中的任何一个匹配。

select
  case item_name
    when any ('PEN', 'PENCIL', 'PAPER', 'ERASER') then 'STATIONARY'
    else 'OTHER'
  end is_stationary
from items;

我尝试了这个查询,似乎不可能。错误消息是,

 ORA-00936: missing expression
 00936. 00000 -  "missing expression"
 *Cause:    
 *Action:
 Error at Line: 29 Column: 10

还有其他解决方法可以达到这个目的吗?

2 个答案:

答案 0 :(得分:6)

试试这个

select
  case when item_name IN ('PEN', 'PENCIL', 'PAPER', 'ERASER') then 'STATIONARY'
    else 'OTHER'
  end is_stationary
from items;

CASE .. IN .. REFERENCE LINK

答案 1 :(得分:3)

到目前为止,@ bvr的答案是解决这个问题最常用的方法。但看起来你非常接近正确使用替代语法, group comparison condition

select
  case
    when item_name = any ('PEN', 'PENCIL', 'PAPER', 'ERASER') then 'STATIONARY'
    else 'OTHER'
  end is_stationary
from items;