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

ลบแถวว่าง (Blank) และ NULL ใน MySQL

ใช้คำสั่ง 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)
ความยาว0NULL
เปรียบเทียบ= ''IS NULL
นับด้วย COUNTนับได้ไม่นับ
CONCATผลลัพธ์เป็นสตริงผลลัพธ์เป็น NULL

ป้องกันข้อมูลว่าง/NULL ตอน INSERT

  • เพิ่ม NOT NULL constraint
  • เพิ่ม CHECK (column != '') (MySQL 8.0.16+)
  • ตั้ง DEFAULT 'N/A' หรือค่าเริ่มต้นอื่น
  • Validate ใน Application layer ก่อน INSERT