ใช้คำสั่ง DELETE กับเงื่อนไข column = '' OR column IS NULL
ไวยากรณ์
DELETE FROM yourTableName WHERE yourColumnName = '' OR yourColumnName IS NULL;
สร้างตารางตัวอย่าง
mysql> CREATE TABLE deleteRowDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20)
-> );
เพิ่มข้อมูลตัวอย่าง (มีค่าว่างและ NULL)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES
('John'), (''), (''), (NULL), ('Carol'), ('Bob'), (''), ('David');
แสดงข้อมูลก่อน (8 แถว รวมว่าง 4 แถว)
mysql> SELECT * FROM deleteRowDemo;
ผลลัพธ์:
+----+-------------+ | Id | StudentName | +----+-------------+ | 1 | John | | 2 | | | 3 | | | 4 | NULL | | 5 | Carol | | 6 | Bob | | 7 | | | 8 | David | +----+-------------+
ลบแถวที่ว่าง ('') และ NULL
mysql> DELETE FROM deleteRowDemo WHERE StudentName = '' OR StudentName IS NULL; Query OK, 4 rows affected (0.18 sec)
ตรวจสอบหลังลบ (เหลือ 4 แถว)
mysql> SELECT * FROM deleteRowDemo;
ผลลัพธ์:
+----+-------------+ | Id | StudentName | +----+-------------+ | 1 | John | | 5 | Carol | | 6 | Bob | | 8 | David | +----+-------------+
ข้อแตกต่างระหว่าง '' (Empty String) และ NULL
| คุณสมบัติ | Empty String ('') | NULL |
|---|---|---|
| ความหมาย | สตริงที่ไม่มีตัวอักษร | ไม่มีค่า (Unknown) |
| ความยาว | 0 | NULL |
| เปรียบเทียบ | = '' | IS NULL |
| นับด้วย COUNT | นับได้ | ไม่นับ |
| CONCAT | ผลลัพธ์เป็นสตริง | ผลลัพธ์เป็น NULL |
ป้องกันข้อมูลว่าง/NULL ตอน INSERT
- เพิ่ม
NOT NULLconstraint - เพิ่ม
CHECK (column != '')(MySQL 8.0.16+) - ตั้ง
DEFAULT 'N/A'หรือค่าเริ่มต้นอื่น - Validate ใน Application layer ก่อน INSERT