在MySQL中,您可以仅使用一次比较来检查字段是NULL还是空?

时间:2013-04-12 21:16:58

标签: mysql null comparison

如果我想使用MySQL查询检查字段是空还是空,我知道我可以这样做:

column = '' OR column IS NULL

但是,有没有办法在不进行两次单独比较的情况下检查这个?

4 个答案:

答案 0 :(得分:32)

使用COALESCE()来“规范化”值(将NULL值转换为空字符串);

WHERE COALESCE(mycolumn, '') = ''

阅读文档:COALESCE()

或者相反;将空字符串转换为NULL;

WHERE NULLIF(mycolumn, '') IS NULL

文档:NULLIF()

在这两个中,我更喜欢COALESCE(),因为它是ANSI SQL标准的一部分

你可以自己试验,就这样做;

SELECT 
    mycolumn                      AS orig_value,
    COALESCE(mycolumn, '')        AS coalesce_value,
    (COALESCE(mycolumn, '') = '') AS compare_result

FROM mytable;

这将为表中的每一行并排显示原始值,'coalesce'值和比较结果

答案 1 :(得分:3)

WHERE COALESCE(column, '') = ''

答案 2 :(得分:1)

没有WHERE的另一种方法,试试这个..

将同时选择Empty和NULL值

SELECT ISNULL(NULLIF(fieldname,''))  FROM tablename

答案 3 :(得分:0)

试试这个:

WHERE NOT(column LIKE '_%')

如果没有NOT,则列的值必须至少包含一个字符,且不能为NULL

编辑:MySQL似乎仍然以这种方式吞下NULL值。这应该更好:

WHERE IFNULL(column, '') = ''