ใช้ฟังก์ชัน NULLIF(value, 0) - ถ้าค่าเท่ากับ 0 จะคืน NULL มิฉะนั้นคืนค่าเดิม
ไวยากรณ์
SELECT *, NULLIF(yourColumn, 0) AS replacedColumn FROM yourTableName;
ตัวอย่างการใช้งาน
สร้างตาราง Replace0WithNULLDemo:
mysql> CREATE TABLE Replace0WithNULLDemo (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(20),
-> Marks INT,
-> PRIMARY KEY(Id)
-> );
เพิ่มข้อมูล (มีคะแนน 0 หลายคน):
mysql> INSERT INTO Replace0WithNULLDemo(Name, Marks) VALUES('John',76),('Carol',86),('Sam',0),('Mike',0),('Larry',98),('Bob',0);
ข้อมูลเดิม
+----+-------+-------+ | Id | Name | Marks | +----+-------+-------+ | 1 | John | 76 | | 2 | Carol | 86 | | 3 | Sam | 0 | | 4 | Mike | 0 | | 5 | Larry | 98 | | 6 | Bob | 0 | +----+-------+-------+
คำสั่งแทนที่ 0 ด้วย NULL
mysql> SELECT *, NULLIF(Marks, 0) AS ReplaceZeroWithNULL FROM Replace0WithNULLDemo;
ผลลัพธ์
+----+-------+-------+---------------------+ | Id | Name | Marks | ReplaceZeroWithNULL | +----+-------+-------+---------------------+ | 1 | John | 76 | 76 | | 2 | Carol | 86 | 86 | | 3 | Sam | 0 | NULL | | 4 | Mike | 0 | NULL | | 5 | Larry | 98 | 98 | | 6 | Bob | 0 | NULL | +----+-------+-------+---------------------+
ประโยชน์: แยกความแตกต่างระหว่าง "ได้คะแนน 0" กับ "ยังไม่ได้สอบ/ไม่มีคะแนน" (NULL)