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

MySQL: CASE WHEN แทนค่า NULL ด้วยค่าที่กำหนด (UNKNOWN NAME)


คำอธิบาย

ใช้ CASE WHEN ... IS NULL THEN ... ELSE ... END แทนค่า NULL ด้วยข้อความที่กำหนด หรือใช้ IFNULL() สั้นกว่า

ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable ( 
    FirstName varchar(20) ); 
Query OK, 0 rows affected (1.15 sec)

การเพิ่มข้อมูล (มี NULL)

mysql> insert into DemoTable values('John'); 
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(NULL); 
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Adam'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(NULL); 
Query OK, 1 row affected (0.09 sec)

แสดงข้อมูลก่อน

mysql> select * from DemoTable;

ผลลัพธ์:

+-----------+
| FirstName |
+-----------+
| John      |
| NULL      |
| Adam      |
| NULL      |
+-----------+
4 rows in set (0.00 sec)

คิวรี่ CASE WHEN แทนที่ NULL

mysql> select case when FirstName is NULL then 'UNKNOWN NAME' else FirstName end AS FirstName 
from DemoTable;

ผลลัพธ์

+--------------+
| FirstName    |
+--------------+
| John         |
| UNKNOWN NAME |
| Adam         |
| UNKNOWN NAME |
+--------------+
4 rows in set (0.00 sec)

วิธีสั้นกว่า: IFNULL()

mysql> select IFNULL(FirstName, 'UNKNOWN NAME') AS FirstName from DemoTable;

ผลลัพธ์ (เหมือนกัน)

+--------------+
| FirstName    |
+--------------+
| John         |
| UNKNOWN NAME |
| Adam         |
| UNKNOWN NAME |
+--------------+
4 rows in set (0.00 sec)

เปรียบเทียบ CASE WHEN vs IFNULL vs COALESCE

ฟังก์ชันรองรับอาร์กิวเมนต์Standardใช้เมื่อไหร่
CASE WHENหลายเงื่อนไขANSILogic ซับซ้อน
IFNULL2 ตัวMySQLแทนที่ NULL เดียว
COALESCEหลายตัวANSIเลือกค่า Non-NULL แรก

COALESCE ตัวอย่าง

SELECT COALESCE(FirstName, NickName, 'UNKNOWN NAME') FROM DemoTable;

ลอง FirstName → NickName → 'UNKNOWN NAME' ตามลำดับ