是否可以在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:缺少关键字
答案 0 :(得分: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