2

有可能在下面的 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

有没有其他解决方法可以实现这一目标?

4

2 回答 2

6

试试这个

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

案例..在..参考链接

于 2013-08-27T10:11:18.563 回答
5

@bvr 的答案是迄今为止解决此问题的最常见方法。但看起来您非常接近正确地使用替代语法 group comparison condition

select
  case
    when item_name = any ('PEN', 'PENCIL', 'PAPER', 'ERASER') then 'STATIONARY'
    else 'OTHER'
  end is_stationary
from items;
于 2013-08-27T23:09:58.853 回答