是否可以在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: 缺少关键字
用子查询来做。
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