Bagaimana cara memeriksa apakah bidang kosong atau kosong di MySQL?

91

Saya mencoba mencari cara untuk memeriksa apakah suatu bidang kosongNULL atau tidak . Aku punya ini:

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

Saya perlu menambahkan tanda centang tambahan field1 != ""seperti:

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

Ada ide bagaimana melakukannya?

veereev
sumber

Jawaban:

201

Baik digunakan

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

atau

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

Jika Anda hanya ingin memeriksa nulldan bukan string kosong, Anda juga dapat menggunakan ifnull()atau coalesce(field1, 'empty'). Tapi itu tidak cocok untuk string kosong.

juergen d
sumber
14

Atau Anda juga dapat menggunakan CASEuntuk hal yang sama:

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

Coba gunakan nullif:

SELECT ifnull(nullif(field1,''),'empty') AS field1
  FROM tablename;
seorang pria dari galaksi lain
sumber
9

Anda dapat menggunakan yang IFNULLfungsi dalam IF. Ini akan menjadi sedikit lebih pendek, dan pengulangan nama field akan lebih sedikit.

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

Anda dapat membuat fungsi untuk mempermudah ini.

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

Menggunakan:

SELECT IFEMPTY(field1, 'empty') as field1 
from tablename
palhares
sumber
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
pengguna7256715
sumber
di sini siapa pun dapat menemukan di sana solusi qry. ini adalah qry yang berjalan dan berharap ini akan berguna bagi semua orang
user7256715
-1

Jika Anda ingin memeriksa di PHP, maka Anda harus melakukan sesuatu seperti:

$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
sumber
3
$isnull = (empty($ertom['YOUROWNAME']) ? empty : not empty); Itu sedikit lebih pendek ..
Robert de Jonge