Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thay thế NULL bằng giá trị tùy chỉnh trong MySQL với CASE WHEN hoặc IFNULL

Xử lý NULL trong MySQL: CASE WHEN và IFNULL()

Khi hiển thị dữ liệu, thường muốn thay giá trị NULL bằng văn bản có ý nghĩa như 'UNKNOWN', 'N/A', 'Chưa cập nhật'. MySQL cung cấp 2 cách: CASE WHEN (linh hoạt) và IFNULL() (đơn giản).

1. Tạo bảng và chèn dữ liệu (có NULL)

mysql> CREATE TABLE DemoTable (FirstName VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES ('John'), (NULL), ('Adam'), (NULL);

2. Xem dữ liệu gốc

mysql> SELECT * FROM DemoTable;
+-----------+
| FirstName |
+-----------+
| John      |
| NULL      |
| Adam      |
| NULL      |
+-----------+

3. Cách 1: CASE WHEN (linh hoạt, chuẩn SQL)

mysql> SELECT CASE
    WHEN FirstName IS NULL THEN 'UNKNOWN NAME'
    ELSE FirstName
    END AS FirstName
FROM DemoTable;

4. Cách 2: IFNULL() (ngắn gọn, MySQL-specific)

mysql> SELECT IFNULL(FirstName, 'UNKNOWN NAME') AS FirstName FROM DemoTable;

5. Kết quả (cả 2 giống nhau)

+--------------+
| FirstName    |
+--------------+
| John         |
| UNKNOWN NAME |
| Adam         |
| UNKNOWN NAME |
+--------------+

So sánh:

Đặc điểmCASE WHENIFNULL()COALESCE()
Số tham sốTùy ý22+
Chuẩn SQLCó (ANSI)Không (MySQL)Có (ANSI)
Điều kiện phức tạpHỗ trợKhôngKhông
Hiệu năngTương đươngTương đươngTương đương

Mở rộng CASE WHEN - Nhiều điều kiện:

SELECT CASE
    WHEN Score >= 90 THEN 'Xuất sắc'
    WHEN Score >= 70 THEN 'Khá'
    WHEN Score >= 50 THEN 'Trung bình'
    ELSE 'Yếu'
END AS Grade
FROM Scores;

Lưu ý: IS NULL không dùng = NULL (luôn FALSE). Luôn dùng IS NULL / IS NOT NULL.