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

วิธีแทนที่ 0 ด้วย NULL ใน MySQL

ใช้ฟังก์ชัน 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)