web-dev-qa-db-fra.com

Comment vérifier si le champ est nul ou vide mysql?

J'essaie de comprendre comment vérifier si un champ est nul ou vide. J'ai ceci

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

J'ai besoin d'ajouter un chèque supplémentaire field1 != "" quelque chose comme

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

Une idée comment accomplir ceci?

68
veereev

Soit utiliser

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

ou

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

Si vous souhaitez uniquement vérifier null et non des chaînes vides, vous pouvez également utiliser ifnull() ou coalesce(field1, 'empty'). Mais cela ne convient pas aux chaînes vides.

165
juergen d

Sinon, vous pouvez également utiliser CASE pour le même:

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

Vous pouvez utiliser la fonction IFNULL à l'intérieur de IF. Ce sera un peu plus court et il y aura moins de répétitions du nom de champ.

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

Vous pouvez créer une fonction pour rendre cela facile.

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

En utilisant:

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

Si vous souhaitez enregistrer PHP, vous devez procéder de la manière suivante:

$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!";
}
0
Adam Noor
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
0
user7256715