如何使用' 0'排除行?值而不是SQL中具有NULL值的行?

时间:2017-12-19 17:36:37

标签: php mysql sql

我的桌子下面有一列reference。它包含NULL01作为其值。我想要排除包含0的行。另外,我希望显示带有NULL值的行。我尝试了reference != 0,但它也排除了NULL值的行。我该如何预防?

4 个答案:

答案 0 :(得分:4)

SELECT reference FROM yourTable WHERE reference = 1 OR reference IS NULL;

这将只返回您想要的值

答案 1 :(得分:2)

NULLS是一个棘手的野兽 - 您无法将null与0进行比较,因此null != 0始终返回unknown,在您的情况下将其视为FALSE。相反,您可以在语句中指定空值:

... WHERE reference IS NULL OR reference != 0

或者您可以使用评估中的其他值替换null:

... WHERE COALESCE(reference, 2) != 0

答案 2 :(得分:0)

数据库中的NULL表示缺少值,这意味着如果与null进行比较,结果始终是未知的。

数据库因此遵循三元逻辑或三值逻辑3VL,因此SQL中的逻辑表达式导致True,false和Unknown。所以当你要求reference != 0时,不会返回NULL,因为它们被评估为UNKNOWN而不是TRUE

要回答您的问题,您需要包括两项检查,即  select reference from tablename where reference is null or reference = 1

在数据库中搜索三值逻辑或在数据库中搜索NULL处理以获取更多信息

答案 3 :(得分:0)

使用NULL保存比较。在MySQL中,这是<=>的相等性。所以,你可以这样做:

where not (reference <=> 0)

在标准SQL中,这将是:

where reference is distinct from 0