where子句中的条件语句用于解释空值

时间:2017-03-22 18:06:53

标签: sql

我有一张像这样的桌子:

ID  | Value  | Value_Comp
101 |  3     |   2
102 |  2     |   4 
103 |  7     |   NULL
104 |  1     |   4   

我想选择Value<的所有ID Value_Comp,但如果有NULL值,则选择数值if value> 5

因此,在这种情况下,将选择ID 102, 103, and 104

编辑:我有很多其他条件。有没有一种简单的方法来写这个,所以我不必重复所有这两次?

2 个答案:

答案 0 :(得分:2)

试试这个:

select *
from t
where (value_comp is null and value > 5)
    or value < value_comp;

您可以将两个条件放在括号中,然后在where子句中添加其他条件:

select *
from t
where ((value_comp is null and value > 5) or value < value_comp)
     and <condition 1> and <condition 2> . . .;

答案 1 :(得分:1)

SELECT ID
FROM your_table
WHERE Value < Value_Comp OR (Value_Comp IS NULL AND Value > 5)