Tìm hiểu lệnh CASE trong MySQL
1] Chức năng & cách sử dụng
- Trong hệ quản trị cơ sở dữ liệu MySQL, lệnh CASE được dùng để tạo ra những giá trị khác nhau dựa trên những điều kiện khác nhau.
- Dưới đây là cú pháp sử dụng lệnh CASE:
CASEWHEN condition1 THEN result1; WHEN condition2 THEN result2; WHEN conditionN THEN resultN; ELSE result; END WHEN condition1 THEN result1; WHEN condition2 THEN result2; WHEN conditionN THEN resultN; ELSE result; END
- Khi lệnh CASE được thực thi, nó sẽ kiểm tra lần lượt các điều kiện [theo thứ tự từ trên xuống], nếu phát hiện được điều kiện đúng thì nó sẽ kết thúc việc kiểm tra & trả về giá trị nằm tại điều kiện đó.
- Lưu ý:
- Nếu không có điều kiện nào đúng thì lệnh CASE sẽ trả về giá trị tại mệnh đề ELSE.
- Nếu không có điều kiện nào đúng & không có mệnh đề ELSE thì lệnh CASE sẽ trả về giá trị NULL.
2] Tham khảo một số ví dụ
- Trong bài học này, tôi sẽ sử dụng cái bảng Student như bên dưới để làm một số ví dụ minh họa.
ID | FullName | Gender | Age | City |
1 | Nguyễn Thành Nhân | Nam | 22 | Cần Thơ |
2 | Dương Văn Gánh | Nam | 19 | Cần Thơ |
3 | Dương Văn Gánh | Sóc Trăng | 27 | Trần Thanh Trúc |
4 | Nữ | Nam | 20 | Cần Thơ |
5 | Dương Văn Gánh | Sóc Trăng | 24 | Trần Thanh Trúc |
6 | Nữ | Nam | 21 | Cần Thơ |
7 | Dương Văn Gánh | Nam | 26 | Cần Thơ |
8 | Dương Văn Gánh | Sóc Trăng | 18 | Trần Thanh Trúc |
Nữ
- Hải Phòng
- Châu Tinh Trì
- Lê Thị Huỳnh Như
SELECT FullName, Age,
CASE
WHEN Age > 20 THEN "Lớn hơn 20 tuổi"
WHEN Age = 20 THEN "Bằng 20 tuổi"
ELSE "Nhỏ hơn 20 tuổi"
END AS AgeGroup
FROM Student;
Bạc Liêu
FullName | Age | City |
Nguyễn Thành Nhân | 22 | Nam |
Dương Văn Gánh | 19 | Sóc Trăng |
Dương Văn Gánh | 27 | Nam |
Nữ | 20 | Hải Phòng |
Dương Văn Gánh | 24 | Nam |
Nữ | 21 | Nam |
Dương Văn Gánh | 26 | Nam |
Dương Văn Gánh | 18 | Sóc Trăng |
Trần Thanh Trúc
Nữ [4 + 10] > 15 là đúng thì sắp xếp thứ tự các sinh viên theo độ tuổi, còn nếu sai thì sắp xếp thứ tự các sinh viên theo giới tính.
SELECT *
FROM Student
ORDER BY
[CASE
WHEN [4+10] > 15 THEN Age
ELSE Gender
END];
Bạc Liêu
ID | FullName | Gender | Age | City |
1 | Nguyễn Thành Nhân | Nam | 22 | Cần Thơ |
2 | Dương Văn Gánh | Nam | 19 | Cần Thơ |
4 | Nữ | Nam | 20 | Cần Thơ |
6 | Nữ | Nam | 21 | Cần Thơ |
7 | Dương Văn Gánh | Nam | 26 | Cần Thơ |
3 | Dương Văn Gánh | Sóc Trăng | 27 | Trần Thanh Trúc |
5 | Dương Văn Gánh | Sóc Trăng | 24 | Trần Thanh Trúc |
8 | Dương Văn Gánh | Sóc Trăng | 18 | Trần Thanh Trúc |
Tìm hiểu lệnh CASE trong MySQL
1] Chức năng & cách sử dụng
- Trong hệ quản trị cơ sở dữ liệu MySQL, lệnh CASE được dùng để tạo ra những giá trị khác nhau dựa trên những điều kiện khác nhau.
- Dưới đây là cú pháp sử dụng lệnh CASE:
CASEWHEN condition1 THEN result1; WHEN condition2 THEN result2; WHEN conditionN THEN resultN; ELSE result; END WHEN condition1 THEN result1; WHEN condition2 THEN result2; WHEN conditionN THEN resultN; ELSE result; END
- Khi lệnh CASE được thực thi, nó sẽ kiểm tra lần lượt các điều kiện [theo thứ tự từ trên xuống], nếu phát hiện được điều kiện đúng thì nó sẽ kết thúc việc kiểm tra & trả về giá trị nằm tại điều kiện đó.
- Lưu ý:
- Nếu không có điều kiện nào đúng thì lệnh CASE sẽ trả về giá trị tại mệnh đề ELSE.
- Nếu không có điều kiện nào đúng & không có mệnh đề ELSE thì lệnh CASE sẽ trả về giá trị NULL.
2] Tham khảo một số ví dụ
- Trong bài học này, tôi sẽ sử dụng cái bảng Student như bên dưới để làm một số ví dụ minh họa.
ID | FullName | Gender | Age | City |
1 | Nguyễn Thành Nhân | Nam | 22 | Cần Thơ |
2 | Dương Văn Gánh | Nam | 19 | Cần Thơ |
3 | Dương Văn Gánh | Sóc Trăng | 27 | Trần Thanh Trúc |
4 | Nữ | Nam | 20 | Cần Thơ |
5 | Dương Văn Gánh | Sóc Trăng | 24 | Trần Thanh Trúc |
6 | Nữ | Nam | 21 | Cần Thơ |
7 | Dương Văn Gánh | Nam | 26 | Cần Thơ |
8 | Dương Văn Gánh | Sóc Trăng | 18 | Trần Thanh Trúc |
Nữ
- Hải Phòng
- Châu Tinh Trì
- Lê Thị Huỳnh Như
SELECT FullName, Age,
CASE
WHEN Age > 20 THEN "Lớn hơn 20 tuổi"
WHEN Age = 20 THEN "Bằng 20 tuổi"
ELSE "Nhỏ hơn 20 tuổi"
END AS AgeGroup
FROM Student;
Bạc Liêu
FullName | Age | City |
Nguyễn Thành Nhân | 22 | Nam |
Dương Văn Gánh | 19 | Sóc Trăng |
Dương Văn Gánh | 27 | Nam |
Nữ | 20 | Hải Phòng |
Dương Văn Gánh | 24 | Nam |
Nữ | 21 | Nam |
Dương Văn Gánh | 26 | Nam |
Dương Văn Gánh | 18 | Sóc Trăng |
Trần Thanh Trúc
Nữ [4 + 10] > 15 là đúng thì sắp xếp thứ tự các sinh viên theo độ tuổi, còn nếu sai thì sắp xếp thứ tự các sinh viên theo giới tính.
SELECT *
FROM Student
ORDER BY
[CASE
WHEN [4+10] > 15 THEN Age
ELSE Gender
END];
Bạc Liêu
ID | FullName | Gender | Age | City |
1 | Nguyễn Thành Nhân | Nam | 22 | Cần Thơ |
2 | Dương Văn Gánh | Nam | 19 | Cần Thơ |
4 | Dương Văn Gánh | Nam | 20 | Cần Thơ |
6 | Dương Văn Gánh | Nam | 21 | Cần Thơ |
7 | Dương Văn Gánh | Nam | 26 | Cần Thơ |
3 | Dương Văn Gánh | Sóc Trăng | 27 | Châu Tinh Trì |
5 | Tì Sa Môn Thiên | Sóc Trăng | 24 | Châu Tinh Trì |
8 | Tì Sa Môn Thiên | Sóc Trăng | 18 | Châu Tinh Trì |
Tì Sa Môn Thiên
Hậu Giang
Doãn Chí Bình
Trần Thanh Trúc
Nữ
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
Hải Phòng
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;
Lê Thị Huỳnh Như
IF[expr1,expr2,expr3]
Bạc Liêu
Phạm Thị Thu Hiền
SELECT IF[movie = 'The Matrix', 'high', 'low'] AS suggestion
Vĩnh Long
SELECT CASE WHEN movie = 'The Matrix' THEN 'high' ELSE 'low' END AS suggestion
Bài viết được sự cho phép của tác giả Nguyễn Văn Minh
SELECT *
FROM Student
ORDER BY
[CASE
WHEN [4+10] > 15 THEN Age
ELSE Gender
END];
0Bạ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ệ.
SELECT *
FROM Student
ORDER BY
[CASE
WHEN [4+10] > 15 THEN Age
ELSE Gender
END];
1Nế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
SELECT *
FROM Student
ORDER BY
[CASE
WHEN [4+10] > 15 THEN Age
ELSE Gender
END];
2Câu lệnh IF