Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL Server

Mệnh Đề CASE Trong SQL Server

Bài viết này sẽ hướng dẫn chi tiết cách sử dụng mệnh đề CASE trong SQL Server với cú pháp cụ thể và ví dụ để dễ hình dung và nắm bắt.

Mô tả

Mệnh đề CASE dùng để thiết lập điều kiện phân nhánh trong SQL Server, tương tự câu lệnh IF-THEN-ELSE.

CASE có 2 dạng:

  1. CASE đơn giản (Simple CASE).
  2. CASE tìm kiếm (Searched CASE).

Chi tiết:

  1. Simple CASE so sánh biểu thức đầu vào với tập biểu thức đơn giản để xác định kết quả.
  2. Searched CASE đánh giá tập biểu thức Boolean để xác định kết quả.
  3. Cả hai hỗ trợ mệnh đề ELSE (nhưng không bắt buộc).

Cú pháp

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

Hoặc 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ố :

  1. bieuthuc_dauvao: biểu thức sẽ so sánh với từng giá trị cung cấp.
  2. bieuthuc_1, bieuthuc_2, bieuthuc_n: biểu thức so sánh lần lượt với biểu thức đầu vào. Khi khớp, CASE thực hiện câu lệnh tiếp theo và không so sánh thêm.
  3. dieukien_1, dieukien_2, dieukien_n: điều kiện xem xét, duyệt theo thứ tự liệt kê. Khi điều kiện true, CASE trả kết quả và không đánh giá thêm. Tất cả điều kiện phải cùng kiểu dữ liệu.
  4. ketqua_1, ketqua_2, ketqua_n: kết quả trả về khi điều kiện true. Tất cả giá trị phải cùng kiểu dữ liệu.

Lưu ý :

  1. Không tìm thấy match cho TRUE, CASE trả kết quả mệnh đề ELSE.
  2. Không có ELSE và không có điều kiện TRUE, CASE trả NULL.
  3. Điều kiện đánh giá theo thứ tự liệt kê. Khi true, trả kết quả ngay và không đánh giá thêm. Cần cẩn thận thứ tự liệt kê điều kiện.
  4. CASE dùng được trong SQL Server: 2017, 2016, 2014, 2012, 2008 R2, 2008, 2005.

Ví dụ

Ví dụ 1: Simple CASE

Giả sử cần kiểm tra chuyên mục TipsMake.com dựa trên cột Code:

  1. Code = '01' -> 'Laptrinh-TipsMake.com'.
  2. Code = '02' -> 'Congnghe-TipsMake.com'.
  3. Code = '03' -> 'Cuocsong-TipsMake.com'.
  4. Ngược lại -> 'Khoahoc-TipsMake.com'.
SELECT tenchuyenmuc, Code

(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'
WHEN 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code

Kết quả:

tenchuyenmucCodeChuyenmuc
SQL Server01Laptrinh-TipsMake.com
Linux02Congnghe-TipsMake.com
Python01Laptrinh-TipsMake.com
JavaScript01Laptrinh-TipsMake.com
Android02Congnghe-TipsMake.com
Giai tri03Cuocsong-TipsMake.com
Cuocsong-TipsMake.com03Cuocsong-TipsMake.com
Science Curve04Khoahoc-TipsMake.com
Kham pha Science05Khoahoc-TipsMake.com

Ví dụ 2: Searched CASE

SELECT tenchuyenmuc,

CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END
FROM chuyenmuc;

Cũng có thể bỏ ELSE:

SELECT tenchuyenmuc, Code

(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'
WHEN 03 THEN 'Cuocsong-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code

Hoặc:

SELECT tenchuyenmuc,

CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
END
FROM chuyenmuc;

Khi bỏ ELSE, nếu không điều kiện nào true, CASE trả NULL.

Ví dụ 3: So sánh hai điều kiện

Ví dụ dùng CASE so sánh điều kiện khác nhau:

SELECT

CASE
WHEN code < 2 THEN 'Laptrinh-TipsMake.com'
WHEN code = 2 THEN 'Congnghe-TipsMake.com'
END
FROM chuyenmuc;

Nhớ điều kiện so sánh theo thứ tự liệt kê. Khi true, CASE trả kết quả ngay và không đánh giá điều kiện khác. Cần cẩn thận thứ tự liệt kê.

Xem thêm ví dụ cụ thể CASE trong SQL Server.