如果我想使用 MySQL 查询检查某个字段是否为 NULL 或为空,我知道我可以执行以下操作:
column = '' OR column IS NULL
但是,有没有办法在不进行两次单独比较的情况下检查这一点?
如果我想使用 MySQL 查询检查某个字段是否为 NULL 或为空,我知道我可以执行以下操作:
column = '' OR column IS NULL
但是,有没有办法在不进行两次单独比较的情况下检查这一点?
用于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;
这将并排显示表中每一行的原始值、“合并”值和比较结果
WHERE COALESCE(column, '') = ''
另一种没有 WHERE 的方法,试试这个..
将同时选择 Empty 和 NULL 值
SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
尝试这个:
WHERE NOT(column LIKE '_%')
如果没有 NOT,则 column 的值必须至少有一个字符,并且不能是NULL
。
编辑:MySQL 似乎仍然以这种方式吞下 NULL 值。这应该会更好:
WHERE IFNULL(column, '') = ''