Hàm COALESCE trong MySQL

Hàm COALESCE trong MySQL
Hàm COALESCE trong MySQL

Chức năng của Hàm COALESCE trong MySQL

Hàm COALESCE trong MySQL dùng để chuyển đổi một giá trị null thành một giá trị nào đó khi select, thường chuyển đổi thành số 0, hàm này thường áp dụng cho các con số và các phép tính, hàm này giống với hàm IFNULL.

Code Hàm COALESCE trong MySQL

Ở ví dụ này cột luong của Bùi Tấn Lực là NULL nên mình chuyển giá trị NULL thành 0 và dùng AS để truyền các giá trị ở cột luong sau khi COALESCE vào cột tạm luongthang:

select tennhanvien,COALESCE(luong,0) AS luongthang from tb_luong;
<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'IhNRcn9n'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Truy vấn bảng
   $sql = "select tennhanvien,COALESCE(luong,0) AS luongthang from tb_luong";
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  die('Không thể lấy dữ liệu: ' . mysql_error());  
   }
   // Dùng vòng lặp để lấy ra từng hàng trong bảng	
   while($row = mysql_fetch_array($ketqua, MYSQL_ASSOC)){
		 echo "tennhanvien: {$row['tennhanvien']} <br> ".
		 "luongthang: {$row['luongthang']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

tennhanvien: Trần Thị Vân
luongthang: 11000000
--------------------------------
tennhanvien: Bùi Đan Trúc Quỳnh
luongthang: 12000000
--------------------------------
tennhanvien: Bùi Tấn Lực
luongthang: 0
--------------------------------
tennhanvien: Nguyễn Thùy Dung
luongthang: 10000000
--------------------------------

Khi nào nên sử dụng Hàm COALESCE trong MySQL?

COALESCE phù hợp khi dữ liệu có thể chứa NULL và bạn muốn chủ động chọn một giá trị thay thế. Thay vì xử lý NULL riêng ở phía ứng dụng, có thể thực hiện ngay trong câu truy vấn để kết quả trả về đầy đủ và dễ sử dụng hơn.

Xử lý giá trị NULL trong dữ liệu thực tế

Trong cơ sở dữ liệu, NULL thường xuất hiện khi một thông tin chưa được nhập, không áp dụng hoặc chưa có dữ liệu. COALESCE giúp đặt ra giá trị dự phòng cho những trường hợp này, chẳng hạn hiển thị một nội dung mặc định khi thông tin khách hàng còn thiếu.

Điểm hữu ích của hàm là có thể cung cấp nhiều giá trị theo thứ tự ưu tiên. MySQL sẽ kiểm tra lần lượt từ trái sang phải và lấy giá trị đầu tiên khác NULL. Nhờ đó, có thể xây dựng cách lấy dữ liệu linh hoạt khi một bản ghi có nhiều nguồn thông tin thay thế.

COALESCE kết hợp với các hàm và câu lệnh MySQL

COALESCE có thể kết hợp với SELECT, CONCAT, phép tính hoặc các hàm xử lý dữ liệu khác. Cách kết hợp này đặc biệt hữu ích khi cần tạo kết quả hoàn chỉnh từ những cột có khả năng chứa NULL.

Ví dụ, khi ghép họ và tên, nếu một trong các cột có giá trị NULL thì kết quả nối chuỗi có thể không như mong muốn. Đưa COALESCE vào từng vị trí cần thiết giúp thay thế dữ liệu thiếu trước khi thực hiện phép xử lý tiếp theo.

Khi sử dụng trong các phép tính, COALESCE cũng có thể giúp tránh việc kết quả bị NULL chỉ vì một cột trong biểu thức không có dữ liệu. Tuy nhiên, nên xác định giá trị thay thế phù hợp với ý nghĩa của dữ liệu thay vì mặc định mọi trường hợp NULL về cùng một giá trị.

So sánh COALESCE và IFNULL trong MySQL

COALESCEIFNULL đều có thể dùng để xử lý NULL, nhưng cách sử dụng có khác nhau. IFNULL nhận hai đối số và kiểm tra một giá trị cụ thể, trong khi COALESCE có thể kiểm tra nhiều giá trị theo thứ tự ưu tiên.

Nếu chỉ cần thay thế một giá trị NULL bằng một giá trị mặc định, IFNULL có thể là lựa chọn ngắn gọn. Khi cần kiểm tra nhiều nguồn dữ liệu và lấy giá trị đầu tiên có dữ liệu, COALESCE linh hoạt hơn.

Vì vậy, lựa chọn hàm nên dựa vào yêu cầu của câu truy vấn. Với những trường hợp cần nhiều mức dự phòng hoặc muốn biểu đạt rõ thứ tự ưu tiên dữ liệu, COALESCE thường mang lại cách viết dễ mở rộng hơn.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm COALESCE trong MySQL.

Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.

  • 0 Bình luận
CEO Bùi Tấn Lực | Founder Web Mới
Bùi Tấn Lực
Tìm hiểu về CEO Bùi Tấn Lực, Founder Web Mới với nhiều năm kinh nghiệm trong lĩnh vực phát triển website, SEO và chia sẻ kiến thức công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm COALESCE trong MySQL
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !