如何检查字段是null还是空mysql?

vee*_*eev 73 mysql sql

我试图弄清楚如何检查字段是空还是空.我有这个

SELECT IFNULL(field1, 'empty') as field1 from tablename
Run Code Online (Sandbox Code Playgroud)

我需要添加额外的检查field1 != ""类似

SELECT IFNULL(field1, 'empty') OR field1 != ""  as field1 from tablename
Run Code Online (Sandbox Code Playgroud)

知道怎么做到这一点?

jue*_*n d 172

要么使用

SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 
from tablename
Run Code Online (Sandbox Code Playgroud)

要么

SELECT case when field1 IS NULL or field1 = ''
            then 'empty'
            else field1
       end as field1 
from tablename
Run Code Online (Sandbox Code Playgroud)

如果您只想检查null而不是空字符串,那么您也可以使用ifnull()coalesce(field1, 'empty').但这不适合空字符串.


小智 17

尝试使用nullif

SELECT ifnull(nullif(field1,''),'empty') AS field1
  FROM tablename;
Run Code Online (Sandbox Code Playgroud)

  • nullif(field, '') 很有用 (2认同)

him*_*056 13

或者您也可以使用CASE相同的:

SELECT CASE WHEN field1 IS NULL OR field1 = '' 
       THEN 'empty' 
       ELSE field1 END AS field1
FROM tablename.
Run Code Online (Sandbox Code Playgroud)


pal*_*res 7

您可以创建一个函数来简化此操作。

create function IFEMPTY(s text, defaultValue text)
returns text deterministic
return if(s is null or s = '', defaultValue, s);
Run Code Online (Sandbox Code Playgroud)

使用:

SELECT IFEMPTY(field1, 'empty') as field1 
from tablename
Run Code Online (Sandbox Code Playgroud)


Gle*_*sky 5

您可以使用IFNULL功能IF。这会短一些,并且字段名称的重复次数会更少。

SELECT IF(IFNULL(field1, '') = '', 'empty', field1) AS field1 
FROM tablename
Run Code Online (Sandbox Code Playgroud)