¿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?

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.


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.


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

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

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

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!";
}

3
$isnull = (empty($ertom['YOUROWNAME']) ? empty : not empty); Eso es un poco más corto ..
Robert de Jonge
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.