Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ตรวจสอบฟิลด์ว่าง (Empty) หรือ NULL ใน MySQL ด้วย CASE

การตรวจสอบ Empty String และ NULL แยกกันด้วย CASE

ใน MySQL NULL และ '' (empty string) เป็นสิ่งต่างกัน ต้องตรวจสอบแยกกันด้วย IS NULL และ = ''

ไวยากรณ์

SELECT *, 
       CASE 
           WHEN yourColumn = '' THEN 'Empty String'
           WHEN yourColumn IS NULL THEN 'NULL Value'
           ELSE CONCAT(yourColumn, ' is a Value')
       END AS status
FROM yourTableName;

ตัวอย่างการใช้งาน

สร้างตาราง:

CREATE TABLE checkFieldDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(10),
    PRIMARY KEY(Id)
);

เพิ่มข้อมูล (ผสม NULL, Empty, Normal):

INSERT INTO checkFieldDemo(Name) VALUES(NULL);
INSERT INTO checkFieldDemo(Name) VALUES('John');
INSERT INTO checkFieldDemo(Name) VALUES(NULL);
INSERT INTO checkFieldDemo(Name) VALUES('');
INSERT INTO checkFieldDemo(Name) VALUES('Carol');
INSERT INTO checkFieldDemo(Name) VALUES('');
INSERT INTO checkFieldDemo(Name) VALUES(NULL);

ตรวจสอบด้วย CASE:

SELECT *, 
       CASE 
           WHEN Name = '' THEN 'It is an empty string'
           WHEN Name IS NULL THEN 'It is a NULL value'
           ELSE CONCAT(Name, ' is a Name')
       END AS ListOfValues
FROM checkFieldDemo;

ผลลัพธ์:

+----+-------+-----------------------+
| Id | Name  | ListOfValues          |
+----+-------+-----------------------+
| 1  | NULL  | It is a NULL value    |
| 2  | John  | John is a Name        |
| 3  | NULL  | It is a NULL value    |
| 4  |       | It is an empty string |
| 5  | Carol | Carol is a Name       |
| 6  |       | It is an empty string |
| 7  | NULL  | It is a NULL value    |
+----+-------+-----------------------+

ข้อผิดพลาดที่พบบ่อย

-- ❌ ผิด: WHERE name = NULL  (ไม่ทำงาน)
-- ❌ ผิด: WHERE name <> 'value'  (ไม่จับ NULL ได้)

-- ✅ ถูกต้อง:
WHERE name IS NULL
WHERE name IS NOT NULL
WHERE name = ''
WHERE name <> ''

ฟังก์ชันช่วยตรวจสอบ

ฟังก์ชันคืนค่าตัวอย่าง
IS NULLTRUE/FALSEcol IS NULL
IS NOT NULLTRUE/FALSEcol IS NOT NULL
IFNULL(col, val)val หาก NULLIFNULL(name, 'Unknown')
COALESCE(col1, col2, ...)ค่าแรกที่ไม่ NULLCOALESCE(name, 'Unknown')
NULLIF(col, val)NULL หาก col=valNULLIF(name, '') -- empty->NULL

การนับ NULL และ Empty

SELECT 
    COUNT(*) AS total,
    SUM(CASE WHEN Name IS NULL THEN 1 ELSE 0 END) AS null_count,
    SUM(CASE WHEN Name = '' THEN 1 ELSE 0 END) AS empty_count,
    SUM(CASE WHEN Name IS NOT NULL AND Name <> '' THEN 1 ELSE 0 END) AS valid_count
FROM checkFieldDemo;