Hàm IFNULL trong MySQL

Hàm IFNULL trong MySQL
Hàm IFNULL trong MySQL

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

Hàm IFNULL 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.

Code Hàm IFNULL 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 IFNULL vào cột tạm luongthang:

select tennhanvien,IFNULL(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,IFNULL(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
--------------------------------

Ứng dụng IFNULL trong MySQL khi xử lý dữ liệu thực tế

Trong dữ liệu thực tế, giá trị NULL xuất hiện khá thường xuyên, chẳng hạn khi người dùng chưa nhập thông tin hoặc một bản ghi không có dữ liệu liên quan. IFNULL() giúp thay thế những giá trị này bằng nội dung phù hợp trước khi kết quả được trả về.

Thay thế giá trị NULL khi hiển thị dữ liệu

Một trong những cách dùng phổ biến của IFNULL() là xử lý dữ liệu trước khi hiển thị. Thay vì để kết quả truy vấn xuất hiện NULL, bạn có thể đưa vào một giá trị mặc định dễ hiểu hơn.

SELECT ten, IFNULL(so_dien_thoai, 'Chưa cập nhật') AS so_dien_thoai
FROM khach_hang;

Trong ví dụ trên, nếu cột so_dien_thoai không có dữ liệu, MySQL sẽ trả về Chưa cập nhật. Cách này đặc biệt hữu ích khi dữ liệu được đưa lên giao diện website và cần tránh những ô thông tin trống hoặc khó hiểu.

Giá trị thay thế không nhất thiết phải là văn bản. Bạn cũng có thể sử dụng số hoặc biểu thức phù hợp với kiểu dữ liệu đang xử lý.

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

IFNULL() có thể kết hợp với nhiều biểu thức khác để xử lý dữ liệu ngay trong câu truy vấn. Điều này giúp hạn chế phải lấy dữ liệu về ứng dụng rồi mới kiểm tra NULL.

SELECT ten_san_pham,
       IFNULL(gia_khuyen_mai, gia_ban) AS gia_hien_thi
FROM san_pham;

Ở đây, nếu gia_khuyen_mai có giá trị thì giá trị đó được sử dụng. Nếu cột này là NULL, MySQL sẽ lấy gia_ban thay thế. Cách kết hợp này phù hợp với những trường hợp một trường dữ liệu có thể có giá trị ưu tiên và cần một giá trị dự phòng.

IFNULL cũng có thể được đặt bên trong các phép tính hoặc biểu thức khác khi cần đảm bảo NULL không làm ảnh hưởng đến kết quả.

Những trường hợp nên và không nên dùng IFNULL

Nên dùng IFNULL() khi bạn thực sự muốn xác định một giá trị thay thế cho NULL, đặc biệt trong các câu truy vấn phục vụ hiển thị, báo cáo hoặc tính toán.

Tuy nhiên, không nên tùy tiện biến NULL thành một giá trị mặc định nếu NULL mang ý nghĩa riêng trong dữ liệu. Ví dụ, việc thay NULL bằng 0 có thể khiến người đọc hiểu rằng giá trị thực tế là 0, trong khi bản chất dữ liệu có thể chỉ là chưa được cung cấp.

Vì vậy, trước khi sử dụng IFNULL, hãy xác định rõ ý nghĩa của NULL trong bảng. Giá trị thay thế nên phản ánh đúng nghiệp vụ thay vì chỉ nhằm làm cho kết quả truy vấn trông đầy đủ hơn.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm IFNULL 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 IFNULL 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) !