ver*_*ric 20 mysql comparison null
如果我想使用MySQL查询检查字段是NULL还是空,我知道我可以这样做:
column = '' OR column IS NULL
Run Code Online (Sandbox Code Playgroud)
但是,有没有办法检查这个而不进行两次单独的比较?
tha*_*tah 33
使用COALESCE()以"正常化"的值(NULL值转换为空字符串);
WHERE COALESCE(mycolumn, '') = ''
Run Code Online (Sandbox Code Playgroud)
阅读文档: COALESCE()
或者相反; 将空字符串转换为NULL;
WHERE NULLIF(mycolumn, '') IS NULL
Run Code Online (Sandbox Code Playgroud)
文档: NULLIF()
在这两个中,我更喜欢COALESCE(),因为它是ANSI SQL标准的一部分
你可以自己试验一下,就这样做吧;
SELECT
mycolumn AS orig_value,
COALESCE(mycolumn, '') AS coalesce_value,
(COALESCE(mycolumn, '') = '') AS compare_result
FROM mytable;
Run Code Online (Sandbox Code Playgroud)
这将为表中的每一行并排显示原始值,'coalesce'值和比较结果
尝试这个:
WHERE NOT(column LIKE '_%')
Run Code Online (Sandbox Code Playgroud)
如果没有 NOT,则列的值必须至少有一个字符,并且不能是NULL。
编辑:MySQL 似乎仍然以这种方式吞下 NULL 值。这应该效果更好:
WHERE IFNULL(column, '') = ''
Run Code Online (Sandbox Code Playgroud)