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?

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.


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.


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

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

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

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

3
$isnull = (empty($ertom['YOUROWNAME']) ? empty : not empty); Itu sedikit lebih pendek ..
Robert de Jonge
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.