Trong bài này mình sẽ hướng dẫn cách sử dụng câu lệnh CASE trong SQL Server thông qua cú pháp và ví dụ thực tế. Bài viết này được đăng tại greensql.net, không được copy dưới mọi hình thức.
1. Mô tả
Câu lệnh CASE có chức năng của câu lệnh IF-THEN-ELSE.
2. Cú pháp
Cú pháp cho câu lệnh CASE trong SQL Server (Transact-SQL) là:
?12345678910CASE expression WHEN value_1 THEN result_1 WHEN value_2 THEN result_2 … WHEN value_n THEN result_n ELSE result END
Hoặc
?12345678910CASE WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 … WHEN condition_n THEN result_n ELSE result END
‒‒:‒‒/‒‒:‒‒ Skip
Trong đó:
expression: Biểu thức sẽ được so sánh với từng giá trị được cung cấp. (ví dụ: value_1, value_2, … value_n).
value_1, value_2, … value_n: Các giá trị sẽ được sử dụng trong đánh giá. Các giá trị được đánh giá theo thứ tự được liệt kê. Khi một giá trị khớp với biểu thức, câu lệnh CASE sẽ thực thi các câu lệnh tương ứng và không đánh giá thêm nữa.
condition_1, condition_2, … condition_n: Các điều kiện sẽ được đánh giá. Các điều kiện được đánh giá theo thứ tự được liệt kê. Khi một điều kiện được xác định là đúng, câu lệnh CASE sẽ trả về kết quả và không đánh giá các điều kiện nữa. Tất cả các điều kiện phải là cùng một kiểu dữ liệu.
result_1, result_2, … result_n: Giá trị được trả về sau khi một điều kiện được tìm thấy là đúng. Tất cả các giá trị phải là cùng một kiểu dữ liệu.
Lưu ý:
Nếu không tìm thấy giá trị / điều kiện nào là TRUE, thì câu lệnh CASE sẽ trả về giá trị trong mệnh đề ELSE.
Nếu mệnh đề ELSE bị bỏ qua và không có điều kiện nào được tìm thấy là đúng, thì câu lệnh CASE sẽ trả về NULL.
Điều kiện được đánh giá theo thứ tự được liệt kê. Khi một điều kiện được xác định là đúng, câu lệnh CASE sẽ trả về kết quả và không đánh giá các điều kiện nữa.
3. Version
Câu lệnh CASE có thể được sử dụng trong các phiên bản sau của SQL Server (Transact-SQL):
SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005
4. Ví dụ
?1234567SELECTCASE WHEN diem < 7 THEN ‘duoi kha’ WHEN diem = 7 THEN ‘kha’ WHEN diem > 7 THEN ‘tren kha’ENDFROM diem;
SyntaxHighlighter.config.stripBrs = false; SyntaxHighlighter.config.tagName = “pre”; SyntaxHighlighter.defaults[“gutter”] = true; SyntaxHighlighter.all();