Wie überprüfe ich, ob das Feld in MySQL null oder leer ist?


84

Ich versuche herauszufinden, wie ich überprüfen kann, ob ein Feld leerNULL oder leer ist . Ich habe das:

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

Ich muss einen zusätzlichen Scheck hinzufügen field1 != ""wie:

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

Irgendeine Idee, wie man das erreicht?

Antworten:


190

Entweder verwenden

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

oder

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

Wenn Sie nur nach nullund nicht nach leeren Zeichenfolgen suchen möchten, können Sie auch ifnull()oder verwenden coalesce(field1, 'empty'). Das ist aber nicht für leere Strings geeignet.


13

Alternativ können Sie auch CASEfür dasselbe verwenden:

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

8

Sie können die IFNULLFunktion innerhalb der verwenden IF. Dies ist etwas kürzer und der Feldname wird weniger wiederholt.

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

6

Sie können eine Funktion erstellen, um dies zu vereinfachen.

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

Verwenden von:

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

Hier kann jeder die Lösung von qry finden. Es ist ein laufendes qry und ich hoffe, es wird für alle nützlich sein
user7256715

-1

Wenn Sie PHP einchecken möchten, sollten Sie Folgendes tun:

$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); Das ist etwas kürzer ..
Robert de Jonge
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.