Tags:

Switch case trong SQL

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:

Đầu tiên nhận một biến gọi là case_value và khớp nó với một số statement_list.
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
Hãy xem xét một truy vấn khác chọn tất cả các trường tương ứng với bảng Khoa. Vì các giá trị được viết trong trường Giới tính là các giá trị ký tự đơn (M / F), chúng ta muốn trình bày chúng ở định dạng dễ đọc hơn.
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/

3.3 3 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x