2.1 Tuyên bố TÌNH HUỐNG
Có hai cách để viết một câu lệnh trong SQL CASE
. Mục nhập đầu tiên làm cho nó giống như chuyển đổi từ ngôn ngữ Java, trong khi định dạng thứ hai giống số nhiều hơn if-else
.
Hãy bắt đầu với tùy chọn đầu tiên - một công tắc tương tự. Định dạng chung là:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Thực sự rất giống với switch
, chỉ có các từ hơi khác một chút:
SQL | Java |
---|---|
trường hợp x | công tắc (x) { |
khi giá trị | giá trị trường hợp: |
sau đó kết quả | trả về kết quả; |
kết quả khác | mặc định: trả về kết quả; |
kết thúc | } |
Hãy dịch một ví dụ từ Java sang SQL:
Java | SQL |
---|---|
|
|
2.2 Phiên bản thứ hai của câu lệnh CASE
Ngoài ra còn có một phiên bản thứ hai của toán tử CASE
, như đã đề cập ở trên, giống như số nhiều hơn if-else
. Định dạng chung là:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Ở đây, các điều kiện chỉ đơn giản là được kiểm tra tuần tự, nếu bất kỳ điều kiện nào là đúng, thì kết quả đã chỉ định sẽ được trả về. Nếu không có điều kiện nào là đúng, thì giá trị được chỉ định trong ELSE
.
Hãy dịch một ví dụ từ Java sang SQL:
Java | SQL |
---|---|
|
|
|
|
|
|
2.3 Giải bài toán bằng câu lệnh CASE
Hãy viết ra một số truy vấn thú vị. Hãy nhớ rằng, chúng tôi đã có một nhiệm vụ - thêm từ "HẾT HẠN!" đến tên của các nhiệm vụ trước đây trong bảng nhiệm vụ . Nó có thể được thực hiện dễ dàng với CASE
.
Đối với trường thời hạn , nó sẽ giống như phiên bản thứ hai của câu lệnh CASE
:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Một ví dụ về truy vấn hoàn chỉnh sử dụng toán tử CASE
:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Kết quả của truy vấn này sẽ là:
nhận dạng | nhân viên_id | tên | thời hạn |
---|---|---|---|
1 | 1 | HẾT HẠN! Sửa lỗi ở frontend | 2022-06-01 |
2 | 2 | Sửa lỗi trên backend | 2022-06-15 |
3 | 5 | Mua cà phê | 2022-07-01 |
4 | 5 | Mua cà phê | 2022-08-01 |
5 | 5 | Mua cà phê | 2022-09-01 |
6 | (VÔ GIÁ TRỊ) | Dọn dẹp văn phòng | (VÔ GIÁ TRỊ) |
7 | 4 | Tận hưởng cuộc sống | (VÔ GIÁ TRỊ) |
số 8 | 6 | Tận hưởng cuộc sống | (VÔ GIÁ TRỊ) |
GO TO FULL VERSION