Lệnh CASE WHEN trong SQL – Chức năng, cú pháp và ví dụ

case when trong sql

CASE WHEN trong SQL là câu lệnh có tính ứng dụng cao, phát huy tác dụng trong nhiều trường hợp khác nhau. Bài viết sau đây của Kiến Thức Phần Mềm  sẽ giúp bạn hiểu rõ hơn chức năng của câu lệnh CASE, cú pháp chính xác của câu lệnh này và ví dụ cụ thể.

Giới thiệu chung về lệnh CASE WHEN trong SQL

CASE là câu lệnh trong SQL có tác dụng thiết lập điều kiện rẽ nhánh. Nhìn chung, câu lệnh CASE khá tương đồng với lệnh IF trong SQL (IF-THEN-ELSE) về mặt chức năng.

Có hai định dạng hàm CASE đó là:

  • Simple CASE: Hàm CASE dạng đơn giản, có chức năng đối chiếu giữa một biểu thức cụ thể và một bộ nhưng biểu thức đơn giản, từ đó giúp xác định kết quả
  • Searched CASE: Hàm CASE dạng tìm kiếm, được dùng để đánh giá 1 bộ những biểu thức Boolean, từ đó giúp xác định kết quả.

Cả hai định dạng hàm CASE này đều có hỗ trợ ELSE là đối số (tuy nhiên không bắt buộc)

CASE là câu lệnh trong SQL có tác dụng thiết lập điều kiện rẽ nhánh
CASE là câu lệnh trong SQL có tác dụng thiết lập điều kiện rẽ nhánh

Xem thêm: Giới thiệu các kiểu dữ liệu trong MySQL

Cú pháp của câu lệnh CASE WHEN trong SQL

Hàm Simple CASE

CASE bieuthuc_dauvao

WHEN bieuthuc_1 THEN ketqua_1

WHEN bieuthuc_2 THEN ketqua_2

WHEN bieuthuc_n THEN ketqua_n

ELSE ketqua_khac

END

Hàm Searched CASE

CASE

WHEN dieukien_1 THEN ketqua_1

WHEN dieukien_2 THEN ketqua_2

WHEN dieukien_n THEN ketqua_n

ELSE ketqua_khac

END

Tham số của cú pháp

Trong hai cú pháp của câu lệnh Case When SQL trên, có những tham số sau mà bạn cần lưu ý:

  • bieuthuc_dauvao: Là biểu thức dùng để đối chiếu với mỗi giá trị được cung cấp
  • bieuthuc_1, bieuthuc_2,… bieuthuc_n: Đây là những biểu thức lần lượt được dùng để đối chiếu với biểu thức đầu vào. Khi hệ thống nhận thấy có sự ăn khớp giữa biểu thức đầu vào và những biểu thức này, CASE sẽ dừng so sánh và thực hiện những câu lệnh kế tiếp.
  • dieukien_1, dieukien_2, dieukien_n: Những điều kiện này sẽ được xác định lần lượt dựa trên thứ tự liệt kê. Trong trường hợp hệ thống xét duyệt và xác định một điều kiện là đúng (TRUE), lệnh CASE sẽ dừng đánh giá những điều kiện sau đó và hiển thị kết quả. Vì vậy việc lựa chọn thứ tự liệt kê đối với các điều kiện phải được thực hiện cẩn thận. Lưu ý toàn bộ các điều kiện phải được đặt ở cùng một kiểu dữ liệu.
  • ketqua_1, ketqua_2, ketqua_n: Đây là kết quả được hiển thị sau khi điều kiện được xét là đúng. Toàn bộ các giá trị tương ứng với kết quả phải thuộc cùng một kiểu dữ liệu.
Cú pháp của câu lệnh CASE WHEN trên nền tảng SQL Server
Cú pháp của câu lệnh CASE WHEN trên nền tảng SQL Server

Những lưu ý khi sử dụng CASE WHEN trong SQL

  • Nếu hệ thống không thể tìm được điều kiện hoặc biểu thức nào được xác định là TRUE, kết quả của câu lệnh CASE sẽ được trả về trong mệnh đề ELSE.
  • Trong trường hợp không có điều kiện đúng và cũng không tồn tại mệnh đề ELSE, câu lệnh CASE sẽ hiển thị kết quả là NULL.
  • Câu lệnh CASE được hỗ trợ trên các phiên bản SQL Server sau đây: SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017…

Tìm hiểu thêm: Lệnh INSERT INTO trong SQL, INSERT INTO SELECT chèn dữ liệu vào bảng

Những ví dụ về câu lệnh CASE trong SQL

Ví dụ về hàm Simple CASE

Giả sử nếu bạn đang muốn kiểm tra các chuyên mục của trang web kienthucphanmem.com. Bạn có thể dựa trên cột mã Code thuộc bảng chuyenmuc. Cụ thể như sau:

  • Code = ‘01’ tương ứng với ‘Phanmem-Kienthucphanmem.com’
  • Code = ‘02’ tương ứng với ‘Marketing-Kienthucphanmem.com’
  • Code = ‘03’ tương ứng với ‘Games-Kienthucphanmem.com’
  • Nếu code không nằm trong khoảng từ 1 đến 3 tức là thuộc chuyên mục ‘Reviews-Kienthucphanmem.com’

Sau đây là cú pháp của lệnh SQL Case When mà bạn cần nhập:

SELECT tenchuyenmuc, Code

(CASE code

WHEN 01 THEN ‘Phanmem-Kienthucphanmem.com’

WHEN 02 THEN ‘Marketing-Kienthucphanmem.com’

WHEN 03 THEN ‘Games-Kienthucphanmem.com’

ELSE ‘Reviews-Kienthucphanmem.com’

END) AS Chuyenmuc

FROM chuyenmuc

ORDER BY Code

Ví dụ về hàm Searched CASE

Trường hợp 1

SELECT tenchuyenmuc,

CASE

WHEN code = 01 THEN ‘Phanmem-Kienthucphanmem.com’

WHEN code = 02 THEN ‘Marketing-Kienthucphanmem.com’

WHEN code = 03 THEN ‘Games-Kienthucphanmem.com’

ELSE ‘Reviews-Kienthucphanmem.com’

END

FROM chuyenmuc;

Trường hợp 2

SELECT tenchuyenmuc, Code

(CASE code

WHEN 01 THEN ‘Phanmem-Kienthucphanmem.com’

WHEN 02 THEN ‘Marketing-Kienthucphanmem.com’

WHEN 03 THEN ‘Games-Kienthucphanmem.com’

END) AS Chuyenmuc

FROM chuyenmuc

ORDER BY Code

Trường hợp 3

SELECT tenchuyenmuc,

CASE

WHEN code = 01 THEN ‘Phanmem-Kienthucphanmem.com’

WHEN code = 02 THEN ‘Marketing-Kienthucphanmem.com’

WHEN code = 03 THEN ‘Games-Kienthucphanmem.com’

END

FROM chuyenmuc;

Lưu ý: Trong các trường hợp 2 và 3 của câu lệnh CASE WHEN trong SQL. Khi bỏ qua mệnh đề ELSE và không phát hiện được điều kiện TRUE, câu lệnh CASE sẽ có kết quả là NULL

Ví dụ về so sánh 2 điều kiện

SELECT

CASE

WHEN code < 2 THEN ‘Phanmem-Kienthucphanmem.com’

WHEN code = 2 THEN ‘Marketing-Kienthucphanmem.com’

END

FROM chuyenmuc;

Ví dụ về việc sử dụng câu lệnh CASE WHEN trong SQL Server
Ví dụ về việc sử dụng câu lệnh CASE WHEN trong SQL Server

Vậy là bạn đã cơ bản nắm được cú pháp của lệnh CASE WHEN trong SQL rồi phải không nào. Trong quá trình sử dụng SQL Server, bạn cần kết hợp linh hoạt các lệnh để đơn giản hóa công việc một cách tối đa. KTPM chúc bạn có được trải nghiệm tốt nhất trên SQL Server!

5/5 - (1 bình chọn)

Chia sẻ ngay!

Facebook
Pinterest
Twitter
Reddit
Subscribe
Thông báo về
guest
0 Bình luận
Phản hồi
Xem tất cả các bình luận

Bài viết liên quan

0
Để lại bình luận ngay bạn nhéx