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

Trả về giá trị NOT NULL, ngược lại lấy cột khác với IFNULL() MySQL

Để 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ố).