Để lấy giá trị cột A nếu không NULL, ngược lại lấy giá trị cột B, MySQL cung cấp hàm IFNULL(expr1, expr2).
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable (
FirstName varchar(100),
LastName varchar(100)
);
Chèn dữ liệu (có NULL ở cả 2 cột):
mysql> insert into DemoTable values('John','Doe');
mysql> insert into DemoTable values(NULL,'Taylor');
mysql> insert into DemoTable values('David',NULL);
mysql> insert into DemoTable values(NULL,'Miller');
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | John | Doe | | NULL | Taylor | | David | NULL | | NULL | Miller | +-----------+----------+
Truy vấn IFNULL(FirstName, LastName)
mysql> select ifnull(FirstName,LastName) as Result from DemoTable;
Kết quả:
+--------+ | Result | +--------+ | John | | Taylor | | David | | Miller | +--------+
Giải thích:
- Hàng 1: FirstName='John' (NOT NULL) → trả về 'John'
- Hàng 2: FirstName=NULL → trả về LastName='Taylor'
- Hàng 3: FirstName='David' (NOT NULL) → trả về 'David' (bỏ qua LastName=NULL)
- Hàng 4: FirstName=NULL → trả về LastName='Miller'
Mở rộng: COALESCE(col1, col2, col3, ...) - trả về giá trị đầu tiên NOT NULL trong danh sách (chuẩn ANSI SQL, hỗ trợ nhiều cột hơn IFNULL chỉ 2 đối số).