MySQL: Case Vs. If Vs. If Function | TopDev
Có thể bạn quan tâm
Bài viết được sự cho phép của tác giả Nguyễn Văn Minh
Bạn đã bao giờ tự hỏi: Trong MySQL, câu lệnh CASE, câu lệnh IF và hàm IF khác nhau thế nào? Bạn có thấy phân vân khi chọn một trong ba thứ trên để viết query? Đây không phải câu hỏi mới nhưng nhiều bạn sẽ bỡ ngỡ khi tiếp xúc với nó. Nhất là khi bạn vừa bắt đầu tìm hiểu về MySQL và cơ sở dữ liệu quan hệ.
Kinh nghiệm vận hành MySQL - Chú ý khi chọn MySQL làm database PHP & MySQL: Novice to Ninja, 5th EditionNếu bạn muốn tìm hiểu cơ sở dữ liệu là gì và có những loại nào, hãy tham khảo bài viết này.
Cú pháp
Câu lệnh CASE
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END Câu lệnh IF
IF condition1 THEN {...statements to execute when condition1 is TRUE...} [ ELSEIF condition2 THEN {...statements to execute when condition1 is FALSE and condition2 is TRUE...} ] [ ELSE {...statements to execute when both condition1 and condition2 are FALSE...} ] END IF;Hàm IF
IF(expr1,expr2,expr3)Đào sâu hơn
Nhìn vào cú pháp trên đây, ta có thể thấy, dường như hàm IF ít linh hoạt hơn câu lệnh CASE. Nếu bạn viết thế này:
SELECT IF(movie = 'The Matrix', 'high', 'low') AS suggestionThì bạn hoàn toàn có thể dùng CASE như thế này:
SELECT CASE WHEN movie = 'The Matrix' THEN 'high' ELSE 'low' END AS suggestionKhá là giống nhau đúng không? Trừ việc hàm IF trông gọn gàng hơn chút ít. Nhưng nếu có nhiều hơn hai nhánh thì sao? Có lẽ bạn sẽ không muốn viết thế này:
SELECT IF(movie = 'The Matrix', 'high', IF(movie = 'Endgame', 'medium', 'low')) AS suggestionMà nên là thế này:
SELECT CASE movie WHEN = 'The Matrix' THEN 'high' WHEN = 'Endgame' THEN 'medium' ELSE 'low' END AS suggestionNó cũng tương tự như khi ta dùng switch để rẽ nhánh vậy, tự nhiên vào thoải mái hơn rất nhiều.
Có một điều bạn phải chú ý. Trong khi câu lệnh CASE là câu lệnh chuẩn của SQL thì hàm IF lại hoàn toàn không phải. Điều đó có nghĩa gì? Nếu bạn có ý định chuyển sang dùng SQL Server hay PostgreSQL chẳng hạn, hàm IF sẽ không còn hoạt động nữa.
Ở một diễn biến khác, câu lệnh IF là cái gì đó rất lạ lẫm với hai thứ trên. Nó được dùng khi viết thủ tục (procedure). Ví dụ:
CREATE FUNCTION get_suggestion (movie varchar(50)) RETURNS varchar(20) BEGIN IF movie = 'The Matrix' THEN return 'high'; ELSEIF movie = 'Endgame' THEN return 'medium'; ELSE return 'low'; END IF; END;Do đó, chớ nên nhầm lẫn mục đích sử dụng của câu lệnh IF với hàm IF, hay thậm chí câu lệnh CASE. Chúng sinh ra vì những “sứ mệnh” khác nhau.
Bài viết gốc được đăng tải tại kinhnghiemlaptrinh.com Có thể bạn quan tâm:- 5 tips để trở thành một coder giỏi hơn mỗi ngày!
- MySQL ngoại truyện
- Kinh nghiệm vận hành MySQL – Chú ý khi chọn MySQL làm database
Xem thêm các việc làm Developer hấp dẫn tại TopDev
Từ khóa » Hàm If Trong Câu Lệnh Select
-
Hàm If Trong Câu Lệnh Select - Page 2 - Diễn Đàn Tin Học
-
Làm Cách Nào để Tôi Thực Hiện IF IF THEN Trong SQL CHỌN? - HelpEx
-
Hàm IF Trong MySQL - Vi
-
Lệnh IF...ELSE Trong SQL Server
-
HƯỚNG DẪN ĐẦY ĐỦ CÂU LỆNH IF TRONG VBA - Học Excel Online
-
Hàm IF Trong MySQL
-
Lệnh Rẻ Nhánh IF ELSE Trong SQL Server - Freetuts
-
Câu Lệnh SELECT Có điều Kiện Trong SQL Server
-
Sửa Các Câu Lệnh SQL để Tinh Chỉnh Kết Quả Truy Vấn
-
Trong SQL Mình Có Hàm Nào Sử Dụng Như Hàm If để Giải Quyết Bài ...
-
[Video] Cách Kết Hợp Hàm QUERY Và Hàm IF Trong Google Sheet Chi ...
-
Bài 7.4. Hàm Logic, Cấu Trúc Lệnh (SELECT CASE, IF-THEN, FOR ...
-
T SQL - Cấu Trúc IF ... ELSE
-
IIF - Hàm Chọn Lựa - SQL & Database