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
列表中的中