¿Cómo verificar si el campo es nulo o vacío en MySQL?

88

Estoy tratando de encontrar la manera de comprobar si un campo es NULLo vacío . Tengo esto:

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

Necesito agregar un cheque adicional field1 != ""algo como:

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

¿Alguna idea de cómo lograr esto?

veereev
fuente

Respuestas:

197

O use

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

o

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

Si solo desea verificar nully no cadenas vacías, también puede usar ifnull()o coalesce(field1, 'empty'). Pero eso no es adecuado para cadenas vacías.

juergen d
fuente
13

Alternativamente, también puede usar CASEpara lo mismo:

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

Intente usar nullif:

SELECT ifnull(nullif(field1,''),'empty') AS field1
  FROM tablename;
un hombre de otra galaxia
fuente
8

Puede utilizar la IFNULLfunción dentro de IF. Esto será un poco más corto y habrá menos repeticiones del nombre del campo.

SELECT IF(IFNULL(field1, '') = '', 'empty', field1) AS field1 
FROM tablename
Gleb Kemarsky
fuente
6

Puede crear una función para facilitar esto.

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

Utilizando:

SELECT IFEMPTY(field1, 'empty') as field1 
from tablename
Palhares
fuente
0
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
usuario7256715
fuente
aquí cualquiera puede encontrar la solución de qry.Es un qry en ejecución y espero que sea útil para todos
user7256715
-1

Si desea verificar en PHP, debe hacer algo como:

$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!";
}
Adam Noor
fuente
3
$isnull = (empty($ertom['YOUROWNAME']) ? empty : not empty); Eso es un poco más corto ..
Robert de Jonge