【问题标题】:How to check if more than one column is empty or NULL如何检查多个列是否为空或 NULL
【发布时间】:2014-04-02 13:50:10
【问题描述】:

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

我已经在 PHPMyAdmin 中尝试过这个查询 - 但是,它仍然返回一些行,其中任何一个的列值为“on”。

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

谁能解释我哪里出错了?

谢谢,

【问题讨论】:

    标签: mysql sql operator-precedence


    【解决方案1】:

    你应该用括号组织你的查询:

    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,'') = '' 
    

    也许这更干净一些。

    【讨论】: