Header ads

Header ads
» » Câu lệnh CASE trong SQL Server

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

Mô tả

Câu lệnh CASE dùng để thiết lập điều kiện rẽ nhánh trong SQL Server, tương tự chức năng của câu lệnh IF-THEN-ELSE.

CASE có 2 định dạng:

    Trong đó:

    • Simple CASE là so sánh một biểu thức với một bộ các biểu thức đơn giản để xác định kết quả.
    • Searched CASE là đánh giá một bộ các biểu thức Boolean để xác định kết quả.
    • Cả 2 định dạng trên đều hỗ trợ đối số ELSE (nhưng không bắt buộc).

    Cú pháp

    Để sử dụng câu lệnh CASE trong SQL Server, ta dùng cú pháp như sau:

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

    • bieuthuc_dauvao: biểu thức sẽ được so sánh với từng giá trị được cung cấp.
    • bieuthuc_1, bieuthuc_2, bieuthuc_n: các biểu thức sẽ được sử dụng để so sánh lần lượt với biểu thức đầu vào. Khi một biểu thức khớp với bieuthu_dauvao, CASE sẽ thực thi các câu lệnh tiếp đó và không so sánh thêm nữa.
    • dieukien_1, dieukien_2, dieukien_n: các điều kiện được xét, duyệt theo thứ tự liệt kê. Khi một điều kiện được xác định là đúng, CASE sẽ trả về kết quả và không đánh giá các điều kiện tiếp theo nữa. Tất cả các điều kiện phải là cùng một kiểu dữ liệu.
    • ketqua_1, ketqua_2, ketqua_n: kết quả trả về sau khi xét điều kiện 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 bieuthuc hoặc dieukien nào là TRUE thì câu lệnh CASE sẽ trả về kết quả trong mệnh đề ELSE.
    • Nếu không có mệnh đề ELSE đồng thời không có điều kiện nào là TRUE 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 tiếp theo nữa.
    • CASE có thể được sử dụng trong các phiên bản sau của SQL Server: SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005.

    Ví dụ

    Hãy xem và khám phá một số ví dụ về câu lệnh CASE trong SQL Server.

    Ví dụ 1: Simple CASE

    Giả sử bạn cần kiểm tra chuyên mục của website Quantrimang.com, dựa vào cột Code (mã) của bảng chuyenmuc:

    • Nếu Code = '01' là 'Laptrinh-Quantrimang.com'.
    • Nếu Code = '02' là 'Congnghe-Quantrimang.com'.
    • Nếu Code = '03' là 'Cuocsong-Quantrimang.com'.
    • Ngược lại, tức là không thuộc từ 1 đến 3 thì ở chuyên mục 'Khoahoc-Quantrimang.com'.
    SELECT tenchuyenmuc, Code
      (CASE code
    WHEN 01 THEN 'Laptrinh-Quantrimang.com'
    WHEN 02 THEN 'Congnghe-Quantrimang.com'
      WHEN 03 THEN 'Cuocsong-Quantrimang.com'
      ELSE 'Khoahoc-Quantrimang.com'
      END) AS Chuyenmuc
    FROM chuyenmuc
    ORDER BY Code

    Kết quả trả về:

    tenchuyenmuc Code Chuyenmuc
    SQL Server 01 Laptrinh-Quantrimang.com
    Linux 02 Congnghe-Quantrimang.com
    Python 01 Laptrinh-Quantrimang.com
    JavaScript 01 Laptrinh-Quantrimang.com
    Android 02 Congnghe-Quantrimang.com
    Giai tri 03 Cuocsong-Quantrimang.com
    Ky nang 03 Cuocsong-Quantrimang.com
    Khoa hoc Cong nghe 04 Khoahoc-Quantrimang.com
    Kham pha Khoa hoc 05 Khoahoc-Quantrimang.com

    Ví dụ 2: Searched CASE

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

    Bạn cũng có thể không sử dụng điều kiện ELSE như này:

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

    Hoặc:

    SELECT tenchuyenmuc,
    CASE
    WHEN code = 01 THEN 'Laptrinh-Quantrimang.com'
    WHEN code = 02 THEN 'Congnghe-Quantrimang.com'
    WHEN code = 03 THEN 'Cuocsong-Quantrimang.com'
      END
    FROM chuyenmuc;

    Khi mệnh đề ELSE được bỏ qua, nếu không có điều kiện nào là đúng, câu lệnh CASE sẽ trả về NULL.

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

    Dưới đây là một ví dụ minh họa cách sử dụng câu lệnh CASE để so sánh các điều kiện khác nhau:

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

    Hãy nhớ rằng các điều kiện được so sánh lần lượt 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ả ngay và không đánh giá các điều kiện khác nữa. Vì vậy, bạn cần cẩn thận khi chọn thứ tự liệt kê các điều kiện của mình.

    Xem thêm các ví dụ cụ thể về hàm CASE trong SQL Server

    Bài trước: Kiểm tra thông tin phiên bản trong SQL Server

    Bài tiếp: Lệnh COALESCE trong SQL Server


    Tham gia nhóm Facebook

    Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
    Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
    Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

    About Học viện đào tạo trực tuyến

    Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
    - Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
    - Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
    HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
    «
    Next
    Bài đăng Mới hơn
    »
    Previous
    Bài đăng Cũ hơn