是null> 0(整数)

时间:2014-05-28 12:24:31

标签: sql null

如果我的sql中有这样的东西:

SELECT * 
FROM SOMETABLE 
WHERE ((SELECT ONECOLUMN FROM ANOTHERTABLE WHERE ID = 42) > 0)

如果我在ONECOLUMN中得到一个NULL,它会大于0吗?

5 个答案:

答案 0 :(得分:2)

由于NULL表示“未知”,因此NULL不大于0.它也不小。它不得而知。因此NULL > 0导致NULL,而不是TRUE或FALSE。

答案 1 :(得分:1)

NULL不大于零。 NULL不等于零。 NULL不小于零。

您可能选择的任何给定整数都将满足这三个条件中的一个。但不是NULL。

NULL不是整数。它是表示不存在值的标记。这可能意味着存在一个值,但是未知。它还可以表明在这种情况下不存在任何价值。

您可以使用ISNULL函数来确定是否存在NULL而不是值。但是如果你将一个值与零进行比较,并且有一个NULL代替该值,那么你将不会得到TRUE或FALSE。

如果你感到困惑,那你就是好公司。

答案 2 :(得分:0)

检查NULL然后返回0如果为true,则返回ONECOLUMN的值:

SELECT * 
FROM SOMETABLE 
WHERE (
  SELECT CASE WHEN ISNULL(ONECOLUMN) THEN 0 ELSE ONECOLUMN END 
  FROM ANOTHERTABLE 
  WHERE ID = 42
) > 0

答案 3 :(得分:0)

Null未知,无法与任何值进行比较。它不能更大或更小。

答案 4 :(得分:0)

SELECT *
    FROM SOMETABLE
    WHERE (
        IsNull((SELECT ONECOLUMN
            FROM ANOTHERTABLE
            WHERE ID = 42), IntValue) > 0
          )

如果您需要接受Null,那么IntValue可以是1,否则-1就可以了。