How to check if field is null or empty in MySQL?

MysqlSql

Mysql Problem Overview


I am trying to figure out how to check if a field is NULL or empty. I have this:

SELECT IFNULL(field1, 'empty') as field1 from tablename

I need to add an additional check field1 != "" something like:

SELECT IFNULL(field1, 'empty') OR field1 != ""  as field1 from tablename

Any idea how to accomplish this?

Mysql Solutions


Solution 1 - Mysql

Either use

SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 
from tablename

or

SELECT case when field1 IS NULL or field1 = ''
            then 'empty'
            else field1
       end as field1 
from tablename

If you only want to check for null and not for empty strings then you can also use ifnull() or coalesce(field1, 'empty'). But that is not suitable for empty strings.

Solution 2 - Mysql

Try using nullif:

SELECT ifnull(nullif(field1,''),'empty') AS field1
  FROM tablename;

Solution 3 - Mysql

Alternatively you can also use CASE for the same:

SELECT CASE WHEN field1 IS NULL OR field1 = '' 
       THEN 'empty' 
       ELSE field1 END AS field1
FROM tablename.

Solution 4 - Mysql

You can use the IFNULL function inside the IF. This will be a little shorter, and there will be fewer repetitions of the field name.

SELECT IF(IFNULL(field1, '') = '', 'empty', field1) AS field1 
FROM tablename

Solution 5 - Mysql

You can create a function to make this easy.

create function IFEMPTY(s text, defaultValue text)
returns text deterministic
return if(s is null or s = '', defaultValue, s);

Using:

SELECT IFEMPTY(field1, 'empty') as field1 
from tablename

Solution 6 - Mysql

By trimming and comparing, we ensure we also take care of empty or tab or space character content in the field.

SELECT
    CASE
        WHEN LTRIM(RTRIM(col_1))='' or col_1 IS NULL THEN 'Not available'
        ELSE col_1
    END AS col_alias
FROM
    my_table

Solution 7 - Mysql

SELECT * FROM ( 
	SELECT  2 AS RTYPE,V.ID AS VTYPE, DATE_FORMAT(ENTDT, ''%d-%m-%Y'')  AS ENTDT,V.NAME AS VOUCHERTYPE,VOUCHERNO,ROUND(IF((DR_CR)>0,(DR_CR),0),0) AS DR ,ROUND(IF((DR_CR)<0,(DR_CR)*-1,0),2) AS CR ,ROUND((dr_cr),2) AS BALAMT, IF(d.narr IS NULL OR d.narr='''',t.narration,d.narr) AS NARRATION 
	FROM trans_m AS t JOIN trans_dtl AS d ON(t.ID=d.TRANSID)
	JOIN acc_head L ON(D.ACC_ID=L.ID) 
	JOIN VOUCHERTYPE_M AS V ON(T.VOUCHERTYPE=V.ID)  
	WHERE T.CMPID=',COMPANYID,' AND  d.ACC_ID=',LEDGERID ,' AND t.entdt>=''',FROMDATE ,''' AND t.entdt<=''',TODATE ,''' ',VTYPE,'
	ORDER BY CAST(ENTDT AS DATE)) AS ta

Solution 8 - Mysql

If you would like to check in PHP , then you should do something like :

$query_s =mysql_query("SELECT YOURROWNAME from `YOURTABLENAME` where name = $name");
$ertom=mysql_fetch_array($query_s);
if ('' !== $ertom['YOURROWNAME']) {
  //do your action
  echo "It was filled";
} else { 
  echo "it was empty!";
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionveereevView Question on Stackoverflow
Solution 1 - Mysqljuergen dView Answer on Stackoverflow
Solution 2 - Mysqla man from another galaxyView Answer on Stackoverflow
Solution 3 - MysqlHimanshu JansariView Answer on Stackoverflow
Solution 4 - MysqlGleb KemarskyView Answer on Stackoverflow
Solution 5 - MysqlpalharesView Answer on Stackoverflow
Solution 6 - MysqlSairam KrishView Answer on Stackoverflow
Solution 7 - Mysqluser7256715View Answer on Stackoverflow
Solution 8 - MysqlAdam NoorView Answer on Stackoverflow