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/