Biểu thức CASE của MySQL là một phần của hàm luồng điều khiển cung cấp cho chúng ta viết logic if-else hoặc if-then-else cho một truy vấn. Biểu thức này có thể được sử dụng ở bất kỳ nơi nào sử dụng chương trình hoặc truy vấn hợp lệ, chẳng hạn như mệnh đề SELECT, WHERE, ORDER BY, v.v.
Biểu thức CASE xác thực các điều kiện khác nhau và trả về kết quả khi điều kiện đầu tiên là đúng. Khi điều kiện được đáp ứng, nó dừng duyệt và đưa ra kết quả. Nếu nó không tìm thấy bất kỳ điều kiện nào đúng, nó sẽ thực hiện khối khác. Khi không tìm thấy khối khác, nó sẽ trả về giá trị NULL. Mục tiêu chính của câu lệnh CASE của MySQL là xử lý nhiều câu lệnh IF trong mệnh đề SELECT
Chúng ta có thể sử dụng câu lệnh CASE theo hai cách như sau
1. Câu lệnh CASE đơn giản
Phương pháp đầu tiên là lấy một giá trị và khớp nó với câu lệnh đã cho, như hình bên dưới
cú pháp
Nó trả về kết quả khi phép so sánh giá_trị đầu tiên trở thành đúng. Nếu không, nó sẽ trả về mệnh đề khác
Ví dụ
đầu ra
Sau khi thực hiện thành công truy vấn trên, chúng ta sẽ nhận được đầu ra sau. Ở đây, chúng ta có thể thấy rằng cột bộ phận chứa dạng đầy đủ thay vì dạng rút gọn
Hàm CASE[] trong MySQL được sử dụng để tìm một giá trị bằng cách chuyển qua các điều kiện bất cứ khi nào bất kỳ điều kiện nào thỏa mãn câu lệnh đã cho, nếu không, nó sẽ trả về câu lệnh trong phần khác. Tuy nhiên, khi một điều kiện được thỏa mãn, nó sẽ ngừng đọc thêm và trả về đầu ra
Đặc trưng
- Hàm này trả về câu lệnh trong phần khác nếu không có điều kiện nào được nêu là đúng
- Hàm này trả về NULL nếu không có điều kiện nào đã nêu là đúng cũng như không có phần nào khác
- Chức năng này nằm trong Chức năng nâng cao
- Hàm này chấp nhận hai tham số là điều kiện và kết quả
cú pháp
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END;
Tham số
Phương pháp này chấp nhận hai tham số như được đưa ra dưới đây
- điều kiện1, điều kiện2, …điều kiệnN. Các điều kiện cụ thể được xác định theo thứ tự chúng được nêu
- kết quả1, kết quả2, …kết quảN. Đầu ra được chỉ định sẽ được trả về nếu điều kiện đã nêu được thỏa mãn
trả lại. Nó trả về một giá trị bằng cách chuyển qua các điều kiện bất cứ khi nào bất kỳ điều kiện nào thỏa mãn câu lệnh đã cho, nếu không, nó trả về câu lệnh trong phần khác. Và nếu không có điều kiện nào được thỏa mãn cũng như không có phần nào khác thì nó trả về NULL
ví dụ 1. Sử dụng hàm CASE[] và nhận đầu ra
CREATE TABLE float01001 [ user_id int NOT NULL AUTO_INCREMENT, float_val float, PRIMARY KEY[user_id] ]; INSERT float01001[float_val] VALUES [1.9]; INSERT float01001[float_val] VALUES [1.1]; INSERT float01001[float_val] VALUES [3.9]; INSERT float01001[float_val] VALUES [5.0]; INSERT float01001[float_val] VALUES [10.9]; SELECT float_val, CASE WHEN float_val > 5 THEN "The value is greater than 5" WHEN float_val = 5 THEN "The value is 5" ELSE "The value is under 5" END as float_txt FROM float01001;
đầu ra
float_val | float_txt ------------------------------------------- 1.9 | The value is under 5 ------------------------------------------- 1.1 | The value is under 5 ------------------------------------------- 3.9 | The value is under 5 ------------------------------------------- 5 | The value is 5 ------------------------------------------- 10.9 | The value is greater than 5
ví dụ 2
Sử dụng hàm CASE[] và kiểm tra xem độ dài của giá trị float đã nêu có lớn hơn, nhỏ hơn hoặc bằng 4 không
CREATE TABLE float01001 [ user_id int NOT NULL AUTO_INCREMENT, float_val float, PRIMARY KEY[user_id] ]; INSERT float01001[float_val] VALUES [9.0]; INSERT float01001[float_val] VALUES [7.7]; INSERT float01001[float_val] VALUES [30.91]; INSERT float01001[float_val] VALUES [8.0]; INSERT float01001[float_val] VALUES [10.9]; SELECT float_val, CASE WHEN LENGTH[float_val] > 4 THEN "The length is greater than 4" WHEN LENGTH[float_val] = 4 THEN "The length is 4" ELSE "The length is less than 4" END as float_txt FROM float01001;
đầu ra
float_val | float_txt ------------------------------------------- 9 | The length is less than 4 ------------------------------------------- 7.7 | The length is less than 4 ------------------------------------------- 30.91 | The length is greater than 4 ------------------------------------------- 8.0 | The length is less than 4 ------------------------------------------- 10.9 | The length is 4
ví dụ 3
Sử dụng hàm CASE[] và kiểm tra xem MRP của mục đã nêu có lớn hơn 400 hay không
CREATE TABLE package099 [ user_id int NOT NULL AUTO_INCREMENT, item VARCHAR[10], mrp int, PRIMARY KEY[user_id] ]; INSERT package099[item, mrp] VALUES ['book1', 350]; INSERT package099[item, mrp] VALUES ['book2', 500]; SELECT mrp, CASE WHEN mrp > 400 THEN "Buy this item" ELSE "Don't buy this item" END as txt FROM package099;
đầu ra
mrp | txt ------------------------------ 350 | Don't buy this item ------------------------------ 500 | Buy this item
Ví dụ 4
Sử dụng hàm CASE[] và kiểm tra lãi lỗ
CREATE TABLE package72 [ user_id int NOT NULL AUTO_INCREMENT, item VARCHAR[10], mrp int, sp int, PRIMARY KEY[user_id] ]; INSERT package72[item, mrp, sp] VALUES ['book1', 250, 255]; INSERT package72[item, mrp, sp] VALUES ['book2', 350, 370]; INSERT package72[item, mrp, sp] VALUES ['book3', 400, 350]; SELECT mrp,sp, CASE WHEN sp > mrp THEN "Profit" ELSE "Loss" END as PL FROM package72;
đầu ra
________số 8Đăng kí. Hàm này được sử dụng để tìm một giá trị bằng cách chuyển qua các điều kiện bất cứ khi nào bất kỳ điều kiện nào thỏa mãn câu lệnh đã cho, nếu không, nó sẽ trả về câu lệnh trong phần khác