Sql Oracle中出现问题时如何解决?

Sql Oracle中出现问题时如何解决?,sql,oracle,Sql,Oracle,我有一个如下所示的问题: SELECT * FROM tbl a WHERE A.DEVICE_CAT IN (CASE :device1 WHEN 'A' THEN 'a1' WHEN 'B' THEN 'b1' WHEN 'C' THEN 'c1' WHEN 'D' THEN 'd1' WHEN 'E' THEN 'e1'

我有一个如下所示的问题:

SELECT * 
FROM   tbl a
   WHERE   A.DEVICE_CAT IN
       (CASE :device1
            WHEN 'A' THEN 'a1'
            WHEN 'B' THEN 'b1'
            WHEN 'C' THEN 'c1'
            WHEN 'D' THEN 'd1'
            WHEN 'E' THEN 'e1'
            WHEN 'F' THEN '(f1, f2)'
            ELSE ' '
         END)

对于
:device1='F'
的情况,我想选择
设备进入('f1','f2')
的结果。怎么写?我当前的查询不正确。

我不喜欢
where
子句中的
case
。我觉得这个逻辑很难理解。我要打破逻辑:

WHERE (:device1 = 'A' and A.DEVICE_CAT = 'a1') OR
      (:device1 = 'B' and A.DEVICE_CAT = 'b1') OR
      (:device1 = 'C' and A.DEVICE_CAT = 'c1') OR
      (:device1 = 'D' and A.DEVICE_CAT = 'd1') OR
      (:device1 = 'E' and A.DEVICE_CAT = 'e1') OR
      (:device1 = 'F' and A.DEVICE_CAT IN ('f1', 'f2'));
此外,您不能将
case
嵌套在
in
列表中的