Tìm hiểu CASE WHEN trong MySQL - cách sử dụng và ứng dụng

Menh de case when trong mysql

CASE WHEN là một câu lệnh trong MySQL được sử dụng để thực hiện các phép so sánh và trả về kết quả tương ứng. Nó giúp chúng ta thực hiện các lệnh tương tự như IF/ELSE trong MySQL.

CASE WHEN trong MySQL

Bài viết này chúng ta sẽ tìm hiểu về câu lệnh CASE WHEN, cú pháp và áp dụng câu lệnh Case when trong bài tập thực tế.

Hình ảnh minh họa

CÚ PHÁP

Cách 1:

  CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE default_result
  END

Trong đó:

  • condition1, condition2, conditionN: Là các câu lệnh điều kiện.
  • result1, result1, resultN: Kết quả trả về với các điều kiện tương ứng đúng.
  • default_result: Kết quả trả về khi không có điều kiện nào bên trên là đúng.

=>XEM THÊM: Tìm hiểu hàm DATE_FORMAT trong MySQL – Định dạng thời gian trong MySQL

Cách 2:

CASE  case_expression
   WHEN when_expression_1 THEN commands1
   WHEN when_expression_2 THEN commands2
   ...
   ELSE commands3
END CASE;

Trong đó:

  • case_expression: Là tên cột, tên biến.
  • when_expression_1, when_expression_2: Các giá trị có thể của case_expression.
  • commands1, commands2: Trả về kết quả tương ứng với các trường hợp sảy ra.
  • commands3: Kết quả nếu case_expression không khớp với bất kì when_expression nào.

=> Nó hoạt động tương tự như câu lệnh rẽ nhánh SWITCH CASE trong các ngôn ngữ lập trình.

Ví dụ sử dụng

Có bảng users với các hàng dữ liệu như bên dưới, bảng dữ liệu này để lưu trữ thông tin người dùng.

Chúng ta hãy chú ý tới cột role trong bảng. Cột này biểu thị chức vụ của từng user trong hệ thống, với tương ứng các số: 1 -> Admin, 2 -> Người dùng, 3 -> Đại lý.

Để minh họa sử dụng case when, khi truy vấn dữ liệu mình sẽ cho thêm cột là role_name là cột chuyển đổi số thành văn bản chức vụ user sử dụng câu lệnh case when. Chúng ta sẽ có câu lệnh đầy đủ như sau:

SELECT *, (CASE WHEN role = 1 THEN "Admin"
           WHEN role = 2 THEN "Người dùng"
           ELSE "Đại lý"
           END) AS role_name FROM `users` WHERE 1

=>XÊM THÊM: Thuộc tính AS (Alias) – Đặt bí danh

Và đây là kết quả khi thực hiện truy vấn dữ liệu.

Như vậy, câu lệnh đã thực hiện được yêu cầu đưa ra.

Cảm ơn bạn đã đọc hết bài viết! Chúc bạn học tốt!

[XEM TẤT CẢ CÁC BÀI HƯỚNG DẪN MYSQL TẠI ĐÂY]

XEM THÊM
Câu lệnh INSERT INTO trong MySQL – Lệnh chèn dữ liệu vào bảng
Câu lệnh CREATE TABLE trong MySQL – Lệnh tạo bảng mới
Các kiểu dữ liệu trong MySQL (Data Types) – Học MySQL
Câu lệnh SELECT trong MySQL – Khi nào thì dùng lệnh SELECT
Toán tử so sánh trong MySQL – So sánh bằng, lớn hơn, nhỏ hơn