• Trang chủ
  • Microsoft Office
  • Hướng dẫn
  • Tin Học & Công Nghệ
  • Thủ thuật
  • App – Game
  • Chuyển đổi số 4.0

ECCI

Kiến thức & Công nghệ

Cover Ecci

You are here: Home / Tin Học & Công Nghệ / Cách dùng lệnh CASE trong SQL Server với lệnh SELECT và UPDATE

Cách dùng lệnh CASE trong SQL Server với lệnh SELECT và UPDATE

26/07/2022 12/08/20220 Bình luận

Cách dùng lệnh CASE trong SQL Server có thể khá dễ dàng với những người nhiều kinh nghiệm. Tuy nhiên nếu bạn mới làm quen với phần mềm quản trị cơ sở dữ liệu này thì việc sử dụng lệnh CASE WHEN một cách linh hoạt trong từng trường hợp lại không hề đơn giản. Trong bài viết này, hãy cùng Ecci tìm hiểu một cách tường tận về lệnh CASE WHEN nhé.

Tổng quan về câu lệnh CASE WHEN trong SQL Server

CASE WHEN là câu lệnh giúp thiết lập điều kiện rẽ nhánh, có thể áp dụng được với các câu lệnh DML là UPDATE và SELECT. Về mặt chức năng, câu lệnh CASE khá giống với lệnh IF ELSE trong SQL.

Hàm CASE có 2 định dạng khác nhau đó là Simple CASE và Searched CASE. Mỗi hàm có ý nghĩa như sau:

  • Simple CASE: Đây là hàm CASE dưới dạng đơn giản, được dùng vào mục đích so sánh giữa 1 biểu thức cụ thể và 1 bộ những biểu thức đơn giản để tìm ra kết quả.
  • Searched CASE: Hàm CASE này có dạng tìm kiếm, được sử dụng để đánh giá 1 bộ các biểu thức Boolean để tìm ra kết quả.
CASE WHEN là câu lệnh giúp thiết lập điều kiện rẽ nhánh
CASE WHEN là câu lệnh giúp thiết lập điều kiện rẽ nhánh

Cách dùng lệnh CASE trong SQL Server kết hợp với lệnh SELECT

Khi kết hợp lệnh SELECT với CASE WHEN thì lệnh CASE-WHEN sẽ được trình bày ở cột riêng, người dùng có thể đặt bí danh tùy ý cho cột này. Có hai cú pháp khi sử dụng lệnh CASE WHEN cho SELECT đó là:

Cú pháp 1

SELECT Các_cột, Bí_danh = CASE Tên_cột

WHEN Giá_trị1 then Hiển_thị1

WHEN Giá_trị2 then Hiển_thị2

…

ELSE Hiển_thị

END

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Hoặc:

SELECT Các_cột, CASE Tên_cột

WHEN Giá_trị1 then Hiển_thị1

WHEN Giá_trị2 then Hiển_thị2

…

ELSE Hiển_thị

END AS Bí_danh

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Ví dụ về lệnh CASE WHEN kết hợp với SELECT trong SQL
Ví dụ về lệnh CASE WHEN kết hợp với SELECT trong SQL

Ví dụ:

Giả sử ta có bảng dữ liệu sau tên là Student:

studentid studentname gender
1 A 1
2 B 0
3 C Null
4 A 0

Nếu muốn hiển thị dữ liệu của toàn bộ bảng Student, trong đó cột gender hiển thị giá trị “Male” thay vì 1, “Female” thay vì 0 và “Unknown” thay vì Null, ta sẽ viết cú pháp như sau:

SELECT studentid, studentname, GENDER = CASE gender

WHEN 1 then ‘Male’

WHEN 0 then ‘Female’

ELSE ‘Unknown’

END

FROM Student;

Hoặc:

SELECT studentid, studentname, CASE gender

WHEN 1 then ‘Male’

WHEN 0 then ‘Female’

ELSE ‘Unknown’

END AS GENDER

FROM Student;

Sau khi nhập đúng cú pháp trên, bạn sẽ nhận được kết quả như sau:

studentid studentname gender
1 A Male
2 B Female
3 C Unknown
4 A Female

Cú pháp 2

SELECT Các_cột, Bí_danh = CASE

WHEN Điều_kiện1 then Hiển_thị1

WHEN Điều_kiện2 then Hiển_thị2

…

ELSE Hiển_thị

END

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Hoặc:

SELECT Các_cột, CASE

WHEN Điều_kiện1 then Hiển_thị1

WHEN Điều_kiện2 then Hiển_thị2

…

ELSE Hiển_thị

END AS Bí_danh

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Ví dụ:

Muốn hiển thị bảng gồm tên khách hàng, số tiền mua hàng của mỗi khách hàng và cột Level dùng để phân loại khách hàng. Trong đó giá trị của cột Level tuân theo tiêu chí sau:

Nếu số tiền mua hàng của khách < 5000 => Điền “Level1”

Từ 5000 đến <10000 => Điền “Level2”

>=10000 => Điền “V.I.P”

Để giải quyết yêu cầu này, ta nhập cú pháp sau:

SELECT c.Ten, SUM(b.SoLuongMua * a.DonGia) AS [TongTienMua], [Level] = CASE

WHEN SUM(b.SoLuongMua * a.DonGia) < 5000 THEN ‘Level 1’

WHEN SUM(b.SoLuongMua * a.DonGia) >= 5000 AND SUM(b.SoLuongMua * a.DonGia) < 10000 THEN ‘Level 2’

WHEN SUM(b.SoLuongMua * a.DonGia) >= 10000 THEN ‘V.I.P’

ELSE ‘Unknown’

END

FROM Item a JOIN CustomerItem b ON a.MaHang=b.Mahang JOIN Customer c ON b.MaKhach=c.MaKhach

GROUP BY c.Ten;

Xem thêm: Tải IDM Full Crack mới nhất bản quyền vĩnh viễn link Drive

Cách dùng lệnh CASE trong SQL Server kết hợp với lệnh UPDATE

Khi cần điều chỉnh dữ liệu trong trường hợp có nhiều tính huống xảy ra thì có thể kết hợp lệnh UPDATE với CASE WHEN. Sau đây là cú pháp thực hiện:

Cú pháp 1

UPDATE Tên_bảng SET Tên_cột = CASE Tên_cột1

WHEN Giá_trị1 then Giá trị 1_1

WHEN Giá_trị2 then Giá trị 2_2

…

ELSE Giá_trị

END;

Cú pháp 2

UPDATE Tên_bảng SET Tên_cột = CASE

WHEN Điều_kiện1 then Giá trị 1_1

WHEN Điều_kiện2 then Giá trị 2_2

…

ELSE Giá_trị

END;

Ví dụ về cách dùng lệnh CASE WHEN kết hợp với UPDATE
Ví dụ về cách dùng lệnh CASE WHEN kết hợp với UPDATE

Những lưu ý về cách dùng lệnh CASE trong SQL Server

Kiểu dữ liệu

Những người mới làm quen với SQL Server hay mắc phải lỗi về kiểu dữ liệu. Khi so sánh sai kiểu dữ liệu thi câu lệnh Case When sẽ không hoạt động đúng cách. Thậm chí một số hệ cơ sở dữ liệu còn hiển thị kết quả “Invalid Input Syntax”.

Trước khi viết lệnh Case When để so sánh cột nào đó thì tốt nhất bạn nên mở bảng đó ra để kiểm tra kiểu dữ liệu trước khi thực hiện lệnh.

Dùng nhiều lệnh Case When trong SQL

Khi bạn sử dụng nhiều Case When hãy lưu ý rằng:

  • Sau khi lệnh CASE WHEN đã đúng (true) và được thực thi, CASE sẽ quay lại đầu vòng lặp và kiểm tra tiếp hàng phía sau, bất chấp số lượng SQL bên dưới.
  • Trong trường hợp WHEN được xác nhận là sai (false) thì CASE sẽ di chuyển đến CASE kế tiếp. Điều này có thể khiến cho performance bị ảnh hưởng nếu số lượng CASE WHEN cần check quá nhiều.

Không có ELSE

Một số bạn viết lệnh Case When nhưng hay bỏ qua trường hợp else. Điều này sẽ dẫn đến trường hợp sau:

Nếu không có ELSE và toàn bộ các điều kiện WHEN đều sai thì giá trị trả về sẽ là NULL.

Một số lưu ý khi sử dụng lệnh CASE WHEN trong SQL Server
Một số lưu ý khi sử dụng lệnh CASE WHEN trong SQL Server

Trên đây là cách dùng lệnh CASE trong SQL Server với các lệnh UPDATE và SELECT. Ecci sẽ còn cập nhật thêm nhiều bài viết hữu ích khác liên quan đến chủ đề SQL trên website Ecci.com.vn. Các bạn chú ý đón đọc để ngày càng hoàn thiện và nâng cao kỹ năng của mình nhé.

Có thể bạn cần: Link download, hướng dẫn cài đặt Photoshop CS6 mới nhất

Ban biên tập: Ecci.com.vn

Bài viết liên quan

Top 4 iPhone chụp ảnh đẹp nhất hiện nay: iPhone 16 Pro Max dẫn đầu
Top 4 iPhone chụp ảnh đẹp nhất hiện nay: iPhone 16 Pro Max dẫn đầu
Active Win 11
Tổng hợp 06 cách crack Active Win 11 vĩnh viễn, Đã test thành công
5 cách Active Win 10 vĩnh viễn 100% nhanh nhất
Hướng dẫn cách Active Windows 10 bản quyền đơn giản nhất

Chuyên mục: Tin Học & Công Nghệ/ Hướng dẫn/ Thủ thuật

Previous Post: « Top 12 Phần mềm thiết yếu cho máy tính PC và laptop tốt nhất
Next Post: Cách tra cứu điểm thi theo tên, xem điểm thi vào 10, thi THPT [year] »

Reader Interactions

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Primary Sidebar

Phản hồi mới

  • Nguyễn Đức Lợi trong Địa điểm cấp đổi giấy phép lái xe (GPLX) nhanh tại TP.HCM và các Thành Phố của Việt Nam [year]
  • vblove trong Hướng dẫn tải và cài đặt Office 365 Full Crack trên Win 11
  • Đoàn Minh Hiếu trong Hướng dẫn tải và cài đặt Office 365 Full Crack trên Win 11
  • MosheHom trong Hướng dẫn cách tải & kích hoạt MathType Full Crack mới nhất [year]
  • Trần Anh Quân trong Tải Microsoft Toolkit 2.7.3 bản mới nhất [year], Active Win và Office

Bài viết mới

  • Top 4 iPhone chụp ảnh đẹp nhất hiện nay: iPhone 16 Pro Max dẫn đầu
  • Hiểu đúng về điều hòa âm trần và hệ thống multi
  • iPhone 16 có gì mới – Top 5 điểm nâng cấp đáng mong chờ nhất

Danh mục

  • App – Game
  • Chuyển đổi số 4.0
  • Download
  • Hướng dẫn
  • Microsoft Office
  • Nổi bật
  • QC
  • Review
  • Thủ thuật
  • Tin Học & Công Nghệ

Footer

Giới thiệu về chúng tôi

Blog ECCI được thành lập năm 2019. Với đội ngũ chuyên nghiệp, mục tiêu của chúng tôi là trở thành một chuyên trang hàng đầu Việt nam về những bài viết, chủ đề chia sẻ kinh nghiệm và hướng dẫn những kiến thức kỹ thuật hữu ích về công nghệ thông tin, từ cơ bản đến chuyên sâu dành cho người dùng và doanh nghiệp.

Kết nối với chúng tôi

  • Facebook
  • LinkedIn
  • Pinterest
  • Reddit
  • Twitter

Mọi thông tin liên lạc hoặc hợp tác quảng cáo vui lòng liên hệ qua Fanpage: m.me/ecci.com.vn

Chính sách

  • Điều khoản sử dụng
  • Chính sách bảo mật
  • Tuyên bố miễn trừ trách nhiệm

© 2019–2025 Ecci.com.vn