Tóm tắt: trong hướng dẫn này, bạn sẽ tìm hiểu về CASE
của SQLite biểu thức để thêm logic có điều kiện vào truy vấn.
SQLite CASE
biểu thức đánh giá một danh sách các điều kiện và trả về một biểu thức dựa trên kết quả của việc đánh giá.
CASE
biểu thức tương tự với IF-THEN-ELSE
câu lệnh trong các ngôn ngữ lập trình khác.
Bạn có thể sử dụng CASE
biểu thức trong bất kỳ mệnh đề hoặc câu lệnh nào chấp nhận một biểu thức hợp lệ. Ví dụ:bạn có thể sử dụng CASE
biểu thức trong các mệnh đề như WHERE
, ORDER BY
, HAVING
, SELECT
và các câu lệnh như SELECT
, UPDATE
và DELETE
.
SQLite cung cấp hai dạng của CASE
biểu thức:simple CASE
và tìm kiếm CASE
.
SQLite đơn giản CASE
biểu thức
CASE
đơn giản biểu thức so sánh một biểu thức với một danh sách các biểu thức để trả về kết quả. Phần sau minh họa cú pháp của CASE
đơn giản biểu thức.
CASE case_expression
WHEN when_expression_1 THEN result_1
WHEN when_expression_2 THEN result_2
...
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
CASE
đơn giản biểu thức so sánh case_expression
đến biểu thức xuất hiện trong WHEN
đầu tiên mệnh đề, when_expression_1
, vì sự bình đẳng.
Nếu case_expression
bằng when_expression_1
, CASE
đơn giản trả về biểu thức trong THEN
tương ứng mệnh đề, là result_1
.
Nếu không, CASE
đơn giản biểu thức so sánh case_expression
với biểu thức trong WHEN
tiếp theo mệnh đề.
Trong trường hợp không có case_expression
khớp với when_expression
, CASE
biểu thức trả về result_else
trong ELSE
mệnh đề. Nếu bạn bỏ qua ELSE
mệnh đề CASE
biểu thức trả về NULL.
CASE
đơn giản biểu thức sử dụng đánh giá ngắn mạch. Nói cách khác, nó trả về kết quả và ngừng đánh giá các điều kiện khác ngay khi tìm thấy kết quả phù hợp.
CASE
đơn giản ví dụ
Chúng ta hãy xem xét customers
trong cơ sở dữ liệu mẫu.
Giả sử, bạn phải lập báo cáo về các nhóm khách hàng với logic rằng nếu khách hàng sống ở Hoa Kỳ thì khách hàng này thuộc nhóm trong nước, nếu không thì khách hàng thuộc nhóm nước ngoài.
Để lập báo cáo này, bạn sử dụng CASE
đơn giản trong SELECT
tuyên bố như sau:
SELECT customerid,
firstname,
lastname,
CASE country
WHEN 'USA'
THEN 'Domestic'
ELSE 'Foreign'
END CustomerGroup
FROM
customers
ORDER BY
LastName,
FirstName;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
SQLite đã tìm kiếm CASE
biểu thức
CASE
đã tìm kiếm biểu thức đánh giá một danh sách các biểu thức để quyết định kết quả. Lưu ý rằng CASE
đơn giản biểu thức chỉ so sánh cho bằng nhau, trong khi CASE
được tìm kiếm biểu thức có thể sử dụng bất kỳ hình thức so sánh nào.
Phần sau minh họa cú pháp của CASE
được tìm kiếm biểu thức.
CASE
WHEN bool_expression_1 THEN result_1
WHEN bool_expression_2 THEN result_2
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
CASE
đã tìm kiếm biểu thức đánh giá biểu thức Boolean trong trình tự được chỉ định và trả về kết quả tương ứng nếu biểu thức đánh giá là true.
Trong trường hợp không có biểu thức nào đánh giá là true, CASE
được tìm kiếm biểu thức trả về biểu thức trong ELSE
mệnh đề nếu được chỉ định. Nếu bạn bỏ qua ELSE
mệnh đề CASE
được tìm kiếm biểu thức trả về NULL
.
Tương tự với CASE
đơn giản biểu thức, CASE
được tìm kiếm biểu thức dừng đánh giá khi một điều kiện được đáp ứng.
CASE
đã tìm kiếm ví dụ
Chúng tôi sẽ sử dụng tracks
bảng cho cuộc trình diễn.
Giả sử bạn muốn phân loại các bản nhạc dựa trên độ dài của nó chẳng hạn như dưới một phút thì bản nhạc đó ngắn; từ 1 đến 5 phút, bài hát ở mức trung bình; lớn hơn 5 phút, bản nhạc dài.
Để đạt được điều này, bạn sử dụng CASE
đã tìm kiếm biểu thức như sau:
SELECT
trackid,
name,
CASE
WHEN milliseconds < 60000 THEN
'short'
WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
ELSE
'long'
END category
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Trong hướng dẫn này, bạn đã học về SQLite CASE
biểu thức để tạo logic có điều kiện bên trong truy vấn SQL.