如何检查多个列是否为空或NULL

时间:2014-04-02 13:50:10

标签: mysql sql operator-precedence

我正在尝试编写一个SELECT语句,它将返回两列为空或NULL的所有行。两列都需要为空或NULL。

我在PHPMyAdmin中尝试了这个查询 - 然而,它仍然返回一些行,其中任一列的值为'on'。

SELECT * 
        FROM product
        WHERE isstock IS NULL 
                   OR isstock = ''
        AND
        iscon IS NULL 
                   OR iscon = ''

有人可以解释我哪里出错吗?

谢谢,

1 个答案:

答案 0 :(得分:6)

您应该用括号组织查询:

SELECT * 
FROM product
WHERE (isstock IS NULL OR isstock = '')
  AND (iscon IS NULL OR iscon = '')

如果我们在默认情况下将括号添加到原始查询中:

isstock IS NULL OR
(isstock = '' AND iscon IS NULL) OR
iscon = ''

所以没有()'它意味着完全不同。

在mysql中你也可以这样做:

SELECT * 
FROM product
WHERE
    ifnull(isstock,'') = '' 
   AND
    ifnull(iscon,'') = '' 

也许这有点清洁。