Hàm CASE trong SQL Server

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ế.

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à:

CASE expression

   WHEN value_1 THEN result_1
   WHEN value_2 THEN result_2
   ...
   WHEN value_n THEN result_n

   ELSE result

END

Hoặc

CASE

   WHEN condition_1 THEN result_1
   WHEN condition_2 THEN result_2
   ...
   WHEN condition_n THEN result_n

   ELSE result

END

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ụ

SELECT
CASE
  WHEN diem < 7 THEN 'duoi kha'
  WHEN diem = 7 THEN 'kha'
  WHEN diem > 7 THEN 'tren kha'
END
FROM diem;

 

Nguồn: freetuts.net