Tóm lược. hướng dẫn này giới thiệu cho bạn chức năng MySQL COALESCE cho phép bạn thay thế các giá trị NULL
Giới thiệu về hàm COALESCE của MySQL
Sau đây minh họa cú pháp hàm
3Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Code language: SQL [Structured Query Language] [sql]
COALESCE[value1,value2,...];
Hàm
3 nhận một số đối số và trả về đối số không NULL đầu tiên. Trong trường hợp tất cả các đối số là NULL, hàmCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
3 trả về NULLCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Sau đây là một số ví dụ đơn giản về cách sử dụng hàm
3Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Ví dụ về hàm COALESCE của MySQL
Xem bảng
3 sau đây trong cơ sở dữ liệu mẫuCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Truy vấn sau trả về tên khách hàng, thành phố, tiểu bang và quốc gia của tất cả khách hàng trong bảng
3Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Code language: SQL [Structured Query Language] [sql]
SELECT customerName, city, state, country FROM customers;
Như bạn thấy, cột trạng thái có giá trị NULL vì một số thông tin này không áp dụng cho quốc gia của một số khách hàng.
Để thay thế giá trị NULL trong tập hợp kết quả, bạn có thể sử dụng hàm
3 như sauCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Code language: SQL [Structured Query Language] [sql]
SELECT customerName, city, COALESCE[state, 'N/A'], country FROM customers;
Trong ví dụ này, nếu giá trị trong cột trạng thái là NULL, thì hàm
3 sẽ thay thế giá trị đó bằng chuỗiCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
7. Ngược lại, nó trả về giá trị của cột trạng thái.Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Một ví dụ điển hình khác của việc sử dụng hàm
3 là thay thế giá trị trong cột này bằng cột khác khi cột đầu tiên là NULLCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Giả sử bạn có một bảng
9 với cấu trúc sau________số 8Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Hãy chèn một số dữ liệu vào bảng
9Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
0Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Hãy tưởng tượng bạn phải hiển thị các bài viết trên một trang tổng quan trong đó mỗi bài viết chứa tiêu đề, chuyên gia và ngày xuất bản [và cả liên kết đọc thêm của trang bài viết]. Nhiệm vụ đầu tiên bạn cần làm là truy vấn dữ liệu này từ bảng
9Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
2Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Như bạn thấy bài viết có id 2 không có đoạn trích, trình bày không đẹp.
Một giải pháp điển hình là lấy số ký tự đầu tiên trong
2 của bài viết để hiển thị dưới dạng đoạn trích. Đây là lý do tại sao hàmCode language: SQL [Structured Query Language] [sql]
SELECT customerName, city, state, country FROM customers;
3 phát huy tác dụngCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
4Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Trong ví dụ này, nếu giá trị trong cột đoạn trích là NULL, thì hàm
3 trả về 150 ký tự đầu tiên của nội dung trong cộtCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
2.Code language: SQL [Structured Query Language] [sql]
SELECT customerName, city, state, country FROM customers;
MySQL COALESCE và biểu thức CASE
Bên cạnh việc sử dụng hàm
3, bạn có thể sử dụng biểu thứcCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
7 để đạt được hiệu quả tương tự
SELECT customerName, city, state, country FROM customers;
Code language: SQL [Structured Query Language] [sql]
Truy vấn sau đây sử dụng biểu thức
7 để đạt được kết quả tương tự như ví dụ trênCode language: SQL [Structured Query Language] [sql]
SELECT customerName, city, state, country FROM customers;
8Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
Trong ví dụ này, biểu thức
7 dài hơn so với sử dụng hàmCode language: SQL [Structured Query Language] [sql]
SELECT customerName, city, state, country FROM customers;
3Code language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
MySQL COALESCE so với. NẾU KHÔNG
Hàm
1 nhận hai đối số và trả về đối số đầu tiên nếu nó không phải là NULL, ngược lại, nó trả về đối số thứ haiCode language: SQL [Structured Query Language] [sql]
SELECT customerName, city, COALESCE[state, 'N/A'], country FROM customers;
Hàm
1 hoạt động hiệu quả với hai đối số trong khi hàmCode language: SQL [Structured Query Language] [sql]
SELECT customerName, city, COALESCE[state, 'N/A'], country FROM customers;
3 hoạt động với đối sốCode language: SQL [Structured Query Language] [sql]
SELECT COALESCE[NULL, 0]; -- 0 SELECT COALESCE[NULL, NULL]; -- NULL;
4. Trong trường hợp số lượng đối số là hai, cả hai chức năng đều giống nhauCode language: SQL [Structured Query Language] [sql]
SELECT customerName, city, COALESCE[state, 'N/A'], country FROM customers;