如果我想使用MySQL查询检查字段是空还是空,我知道我可以这样做:
column = '' OR column IS NULL
但是,有没有办法在不进行两次单独比较的情况下检查这个?
答案 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, '') = ''