Gần như chúng ta đều thân thuộc với mệnh đề switch-case vì hầu hết mọi ngôn ngữ lập trình đều cung cấp nó. SQL cũng vậy, chúng ta sẽ cùng tìm hiểu ngay sau đây.
Cú pháp
Chúng ta có thể sử dụng mệnh đề switch case trong SQL qua 2 cách sau:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
Phương thức thứ hai xem xét điều kiện tìm kiến thay vì so sánh giá trị như cách 1. Sau đó thực thi các tập lệnh statement_list.
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
| FACULTYID | NAME | DEPARTMENT | GENDER |
|---|---|---|---|
| 001 | Aakash | CS | M |
| 002 | Sahil | EC | M |
| 003 | John | HSS | M |
| 004 | Shelley | CS | F |
| 005 | Anannya | CS | F |
| 006 | Sia | HSS | F |
Giả sử chúng ta muốn sửa đổi bảng này sao cho nếu tên khoa là ‘CS’, nó được sửa đổi thành ‘Computer Science’, nếu là ‘EC’, nó sẽ được sửa đổi thành ‘Electronics and Communication’ và nếu là ‘ HSS ‘nó được sửa đổi thành ‘Humanities and Social Sciences’ ‘. Điều này có thể đạt được bằng cách sử dụng câu lệnh tình huống.
CASE department_name WHEN 'CS' THEN UPDATE Faculty SET department='Computer Science'; WHEN 'EC' THEN UPDATE Faculty SET department='Electronics and Communication'; ELSE UPDATE Faculty SET department='Humanities and Social Sciences'; END CASE
SELECT FacultyID, Name, Department, CASE Gender WHEN'M' THEN 'Male' WHEN'F' THEN 'Female' END FROM Faculty
Output:
| FACULTYID | NAME | DEPARTMENT | GENDER |
|---|---|---|---|
| 001 | Aakash | CS | Male |
| 002 | Sahil | EC | Male |
| 003 | John | HSS | Male |
| 004 | Shelley | CS | Female |
| 005 | Anannya | CS | Female |
| 006 | Sia | HSS | Female |
Hãy xem xét một ví dụ khác làm thay đổi thứ tự sắp xếp mặc định trông SQL.
CREATE PROCEDURE GetFaculty(@ColToSort varchar(150)) AS
SELECT FacultyID, Name, Gender, Department
FROM Customers
ORDER BY
CASE WHEN @ColToSort='Department' THEN Department
WHEN @ColToSort='Name' THEN Name
WHEN @ColToSort='Gender' THEN Gender
ElSE FacultyID
END
Nguồn tham khảo
https://www.geeksforgeeks.org/sql-case-statement/