SQL WHERE / CASE 问题

SQL questions of WHERE / CASE

我对 sql 声明有疑问。 它有select离子框来选择参数值,包括'A'、'B'和Empty。他们将传递给 :ABC value

当select 'A',数据会显示结果相关'A',B会select B和空会select两者如何处理A 和 B.

我不知道如何处理 select“空”,sql 将 select A 和 B。 非常感谢你帮助我。

Select * From table WHERE table.abc IN
(CASE WHEN :ABC = 'A' THEN 'A'
WHEN :ABC = 'B' THEN 'B'
WHEN :ABC IS NULL THEN ('A','B')
END);```

使用IN SELECT...代替IN (..)可以解决这个问题:

Select * 
From table 
WHERE table.abc IN
   (SELECT 'A' WHERE :ABC='A' or :ABC IS NULL
    union
    SELECT 'B' WHERE :ABC='B' or :ABC IS NULL
   )