0

是否可以在Oracle中有一个CASE IN()子句?WHERE

例如:

SELECT vip 
FROM table 
WHERE
  CASE WHEN $inputVar LIKE '' 
  THEN vip IN (1,2,3)
  ELSE vip in ($inputVar)
  END

编辑:使用此代码,我得到错误:

ORA-00905: 缺少关键字

4

1 回答 1

1

用子查询来做。

SELECT vip 
FROM table 
WHERE
vip in
 (select
  CASE WHEN $inputVar LIKE '' 
  THEN 1
  ELSE $inputVar
  END from dual)

但是如果你想要默认值是多条用逗号分隔的记录,那是做不到的。您必须动态地对其进行构图。

在联合的帮助下进行查询

select * from table where vip in (1,2,3) and $inputvar = ''
union all
select * from table where vip in $inputvar
于 2013-09-10T12:15:41.843 回答