Trường hợp trong mysql

Dưới đây sẽ hướng dẫn cách sử dụng CASE-WHEN cho câu lệnh CHỌN, bạn có thể xem cách sử dụng CASE-WHEN cho câu lệnh UPDATE tại bài viết về CẬP NHẬT

Khi sử dụng cho SELECT thì CASE-WHEN sẽ thể hiện ở một cột riêng và ta có thể đặt bí danh cho cột này

cú pháp

Có hai cú pháp sử dụng CASE-WHEN can be current cụ thể như sau

Cú pháp 1

SELECT Các_cột, Bí_danh = CASE Tên_cột

KHI Giá_trị1 thì Hiển_thị1

KHI Giá_trị2 thì Hiển_thị2

...

KHÁC Hiển thị_thị

CHẤM DỨT

TỪ Các_bảng_liên_kết [WHERE Điều_kiện];

hoặc

SELECT Các_cột, CASE Tên_cột

KHI Giá_trị1 thì Hiển_thị1

KHI Giá_trị2 thì Hiển_thị2

...

KHÁC Hiển thị_thị

END AS Bí_danh

TỪ Các_bảng_liên_kết [WHERE Điều_kiện];

Ví dụ

Bảng giả sử Học sinh có các dữ liệu sau đây

sinh viênidstudentnamegender1A12B03CNull4A0

Bây giờ ta muốn hiển thị toàn bộ dữ liệu của bảng Student in that the column giới tính sẽ hiển thị 'Nam' thay cho 1, 'Nữ' thay cho 0 và 'Không biết' thay cho Null. Ta làm như sau

CHỌN id sinh viên, tên sinh viên, GIỚI TÍNH  = TRƯỜNG HỢP giới tính

KHI 1 thì 'Nam'

KHI 0 thì 'Nữ'

KHÁC 'Không xác định'

CHẤM DỨT

TỪ Học sinh;

hoặc

CHỌN mã học sinh, tên học sinh, giới tính TRƯỜNG HỢP

KHI 1 thì 'Nam'

KHI 0 thì 'Nữ'

KHÁC 'Không xác định'

END AS GIỚI TÍNH

TỪ Học sinh;

 

Kết quả sẽ hiển thị như sau

id sinh viêntên sinh viênGIỚI 1ANam 2BNữ 3CUUnknow4ANữ

Cú pháp 2

SELECT Các_cột, Bí_danh = CASE

KHI Điều_kiện1 thì Hiển_thị1

KHI Điều_kiện2 thì Hiển_thị2

...

KHÁC Hiển thị_thị

CHẤM DỨT

TỪ Các_bảng_liên_kết [WHERE Điều_kiện];

hoặc

SELECT Các_cột, TRƯỜNG HỢP

KHI Điều_kiện1 thì Hiển_thị1

KHI Điều_kiện2 thì Hiển_thị2

...

KHÁC Hiển thị_thị

END AS Bí_danh

TỪ Các_bảng_liên_kết [WHERE Điều_kiện];

Ví dụ

Hiển thị tên hàng của khách hàng, tổng số tiền mua hàng của từng khách hàng và hiển thị cột Cấp độ với giá trị được nhập vào cột này theo tiêu chí sau. Nếu tổng số tiền mua hàng của từng khách < 5000 thì điền giá trị là 'Level1', từ 5000 đến < 10000 thì điền giá trị là 'Level2', >=10000 thì điền giá trị là 'V. I. P' [Câu 14 bài thực hành 4]. Ta giải quyết yêu cầu này như sau

- Trong hệ thống quản trị cơ sở dữ liệu MySQL, lệnh CASE được sử dụng để tạo ra các giá trị khác nhau dựa trên các điều kiện khác nhau

Nội dung chính Hiển thị

- Dưới đây là cú pháp sử dụng lệnh CASE

CASEWHEN điều kiện1 THÌ kết quả1; 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 đúng điều kiện thì nó sẽ kết thúc việc kiểm tra & trả lại giá trị nằm ở điều kiện đó

- Lưu ý

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

IDHọ và TênGiới tínhTuổiThành phố1Nguyễn Thành NhânNam22Cần Thơ2Dương Văn GánhNam19Cần Thơ3Dương Văn GánhSóc Trăng27Trần Thanh Trúc4NữNam20Cần Thơ5Dương Văn GánhSóc Trăng24Trần Thanh Trúc6NữNam21Cần Thơ7Dương Văn GánhNam26Cần Thơ8Dương Văn GánhSóc Trăng18Trầ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

Họ Và TênTuổiThành PhốNguyễn Thành Nhân22NamDương Văn Gánh19Sóc TrăngDương Văn Gánh27NamNữ20Hải PhòngDương Văn Gánh24NamNữ21NamDương Văn Gánh26NamDương Văn Gánh18Sóc Trăng

Trần Thanh Trúc

Nữ [4 + 10] > 15 là đúng thì sắp xếp thứ tự các học sinh theo độ tuổi, còn nếu sai thì sắp .

SELECT *
FROM Student
ORDER BY
[CASE
	WHEN [4+10] > 15 THEN Age
	ELSE Gender
END];

Bạc Liêu

IDHọ và TênGiới tínhTuổiThành phố1Nguyễn Thành NhânNam22Cần Thơ2Dương Văn GánhNam19Cần Thơ4NữNam20Cần Thơ6NữNam21Cần Thơ7Dương Văn GánhNam26Cần Thơ3Dương Văn GánhSóc Trăng27Trần Thanh Trúc5Dương Văn GánhSóc Trăng24Trần Thanh Trúc8Dương Văn GánhSóc Trăng18Trầ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ệ thống quản trị cơ sở dữ liệu MySQL, lệnh CASE được sử dụng để tạo ra các giá trị khác nhau dựa trên các điều kiện khác nhau

- Dưới đây là cú pháp sử dụng lệnh CASE

CASEWHEN điều kiện1 THÌ kết quả1; 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 đúng điều kiện thì nó sẽ kết thúc việc kiểm tra & trả lại giá trị nằm ở điều kiện đó

- Lưu ý

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

IDHọ và TênGiới tínhTuổiThành phố1Nguyễn Thành NhânNam22Cần Thơ2Dương Văn GánhNam19Cần Thơ3Dương Văn GánhSóc Trăng27Trần Thanh Trúc4NữNam20Cần Thơ5Dương Văn GánhSóc Trăng24Trần Thanh Trúc6NữNam21Cần Thơ7Dương Văn GánhNam26Cần Thơ8Dương Văn GánhSóc Trăng18Trầ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

Họ Và TênTuổiThành PhốNguyễn Thành Nhân22NamDương Văn Gánh19Sóc TrăngDương Văn Gánh27NamNữ20Hải PhòngDương Văn Gánh24NamNữ21NamDương Văn Gánh26NamDương Văn Gánh18Sóc Trăng

Trần Thanh Trúc

Nữ [4 + 10] > 15 là đúng thì sắp xếp thứ tự các học sinh theo độ tuổi, còn nếu sai thì sắp .

SELECT *
FROM Student
ORDER BY
[CASE
	WHEN [4+10] > 15 THEN Age
	ELSE Gender
END];

Bạc Liêu

IDHọ và TênGiới tínhTuổiThành phố1Nguyễn Thành NhânNam22Cần Thơ2Dương Văn GánhNam19Cần Thơ4Dương Văn GánhNam20Cần Thơ6Dương Văn GánhNam21Cần Thơ7Dương Văn GánhNam26Cần Thơ3Dương Văn GánhSóc Trăng27Châu Tinh Trì5Tì Sa Môn ThiênSóc Trăng24Châu Tinh Trì8Tì Sa Môn ThiênSóc Trăng18Châ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

________số 8

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];
0

You have been 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? . 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ệ

Chủ Đề