Vì một số lý do, tôi luôn viết các câu lệnh Case của mình bằng cách sử dụng logic sau: Mãi cho đến gần đây, tôi mới nhận thấy rằng có một cú pháp khác có thể được sử dụng với biểu thức CASE, phần thú vị về biểu mẫu khác này là nó đúng hơn thẩm mỹ khi xử lý nhiều mệnh đề WHEN…

Bạn đang xem: trường hợp khi sql null

Vì lý do nào đó, tôi luôn viết các câu lệnh Case của mình bằng cách sử dụng logic sau:

LỰA CHỌN
TRƯỜNG HỢP
KHI @Practive = 1 THÌ 'Rất cao'
KHI @Phesia = 2 THÌ 'Cao'
KHI @Posystem = 3 THÌ 'Trung bình'
KHI @Posystem = 4 THÌ 'Thấp'
ELSE 'N / A'
CHẤM DỨT

Cho đến gần đây, tôi mới nhận thấy rằng có một cú pháp khác có thể được sử dụng với biểu thức CASE, phần thú vị về biểu thức khác này là nó khá đẹp mắt về mặt thẩm mỹ khi xử lý nhiều mệnh đề WHEN (hoặc ít nhất đây là những gì tôi nghĩ lúc đầu 😛)

Ví dụ:

LỰA CHỌN
CASE @Pinent
KHI 1 THÌ 'Rất cao'
KHI 2 THÌ 'Cao'
KHI 3 THÌ 'Trung bình'
KHI 4 THÌ 'Thấp'
ELSE 'N / A'
CHẤM DỨT

Nó trông thật sạch sẽ so với ví dụ đầu tiên! nhưng phải đến khi tôi thử nghiệm phương pháp thứ hai, tôi mới nhận ra rằng hành vi của hai biểu thức CASE khác nhau như được nêu trên sách trực tuyến

Biểu thức CASE có hai định dạng:
Biểu thức CASE đơn giản so sánh một biểu thức với một tập hợp các biểu thức đơn giản để xác định kết quả.
Biểu thức CASE được tìm kiếm đánh giá một tập hợp các biểu thức Boolean để xác định kết quả.
Cả hai định dạng đều hỗ trợ đối số ELSE tùy chọn.

Tôi đã tổng hợp một số ví dụ để minh họa sự khác biệt khi đánh giá Null bằng cách sử dụng hai biểu thức Trường hợp, truy vấn trả về cột ‘Tên cơ sở dữ liệu’ từ mệnh đề giá trị danh sách dẫn xuất, ví dụ 1 có giá trị Null và ví dụ 2 có giá trị là ‘ SQLUndercover ‘mà bạn sẽ thấy bên dưới:

Xem Thêm  SQL Server WHERE - máy chủ sql mệnh đề where

Ví dụ 1:

LỰA CHỌN
Tên cơ sở dữ liệu,
Tên cơ sở dữ liệu CASE
KHI NULL THÌ 'It''s a NULL'
KHI 'SQLUndercover' THÌ 'Tìm thấy đối sánh'
ELSE 'Không tìm thấy kết quả phù hợp'
END AS CaseExample1,
TRƯỜNG HỢP
KHI Tên cơ sở dữ liệu LÀ KHÔNG ĐỦ THÌ 'Đó là NULL'
KHI Databasename = 'SQLUndercover' THÌ 'Tìm thấy Kết quả phù hợp'
ELSE 'Không tìm thấy kết quả phù hợp'
END AS CaseExample2
FROM (VALUES (NULL)) AS DerivedList (Tên cơ sở dữ liệu)

Ví dụ 2:

LỰA CHỌN
Tên cơ sở dữ liệu,
Tên cơ sở dữ liệu CASE
KHI NULL THÌ 'It''s a NULL'
KHI 'SQLUndercover' THÌ 'Tìm thấy đối sánh'
ELSE 'Không tìm thấy kết quả phù hợp'
END AS CaseExample1,
TRƯỜNG HỢP
KHI Tên cơ sở dữ liệu LÀ KHÔNG ĐỦ THÌ 'Đó là NULL'
KHI Databasename = 'SQLUndercover' THÌ 'Tìm thấy Kết quả phù hợp'
ELSE 'Không tìm thấy kết quả phù hợp'
END AS CaseExample2
FROM (VALUES ('SQLUndercover')) AS DerivedList (Tên cơ sở dữ liệu)

Điều buồn cười là tôi đã tình cờ gặp phải điều này khi tôi thực hiện một số thay đổi mã vào ngày hôm trước và khi tôi kiểm tra mã, tôi tự hỏi tại sao NULL không được đánh giá chính xác! Đồ thẩm mỹ chết tiệt 🙂

Điều thú vị là khi bạn xem các kế hoạch thực hiện:

Đáng ngạc nhiên là NULL dường như được đánh giá giống nhau nhưng giá trị trả về khác nhau, hãy xem kế hoạch trông như thế nào khi có một giá trị để đánh giá.

Thật thú vị là lần này có một toán tử so sánh ‘IS’ được sử dụng trong kế hoạch.

Vì vậy, hãy cẩn thận khi đánh giá NULL trong biểu thức CASE, hãy đảm bảo chọn đúng loại CASE cho công việc, nếu không, bạn có thể thấy các truy vấn của mình trả về dữ liệu không chính xác.

Xem Thêm  CAST và CHUYỂN ĐỔI (Transact-SQL) - SQL Server - chuyển đổi chuỗi trong sql

Tôi đã tiến hành kiểm tra này bằng cách sử dụng ANSI_NULLS ON, bạn sẽ thấy rằng hành vi thay đổi nếu bạn đang sử dụng ANSI_NULLS_OFF vì phép so sánh bình đẳng của NULL được cho phép khi nó được đặt thành tắt, do đó kết quả sẽ giống nhau tuy nhiên hãy đảm bảo luôn kiểm tra nó ra 🙂

Cảm ơn bạn đã đọc.

Chia sẻ cái này:

Thích nội dung này:

Thích

Đang tải …


Xem thêm những thông tin liên quan đến chủ đề trường hợp khi null sql

SQL Null or Empty – How to Check for Null or Empty Column in SQL Server – Quick Tips Ep42

  • Tác giả: Joey Blue
  • Ngày đăng: 2012-11-05
  • Đánh giá: 4 ⭐ ( 9735 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: http://www.sqltrainingonline.com SQL Null or Empty – How to Check for Null or Empty Column in SQL Server – SQL Training Online

    You can download the sample table script at http://www.sqltrainingonline.com/how-to-filter-for-sql-null-or-empty-string/.

    In this video, I show you how to filter for a SQL null or empty string. It can be difficult to filter a null because you can’t simply compare with an equal sign. You have to use a special IS NULL clause to make the filter work.

    I also show you how to combine both the SQL Null and Empty String together in a special trick with the isnull SQL Server function. I use SQL Server to demonstrate the technique.

    If you enjoy the video, please give it a like, comment, or subscribe to my channel.

    READ THE ORIGINAL ARTICLE WITH SQL SCRIPTS HERE
    http://www.sqltrainingonline.com/

    YOUTUBE NEWS UPDATES
    http://www.youtube.com/user/sqltrainingonline

    VISIT SQLTRAININGONLINE.COM FOR MORE VIDEO NEWS & TIPS
    http://www.sqltrainingonline.com

    SUBSCRIBE FOR OTHER SQL TIPS AND NEWS!
    http://www.youtube.com/subscription_center?add_user=sqltrainingonline

    SUBSCRIBE TO OUR EMAIL LIST!
    http://www.sqltrainingonline.com

    LET’S CONNECT!
    Facebook: http://facebook.com/SQLTrainingOnline
    Twitter: http://twitter.com/sql_by_joey
    Linkedin: http://linkedin.com/in/joeyblue
    SQLTrainingOnline: http://www.sqltrainingonline.com

1-7 Phép toán tập hợp trong SQL

  • Tác giả: viblo.asia
  • Đánh giá: 3 ⭐ ( 2817 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1-7 Phép toán tập hợp trong SQL

Điều khoản CASE T-SQL: Cách chỉ định KHI NULL

  • Tác giả: qastack.vn
  • Đánh giá: 5 ⭐ ( 3115 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] CASE WHEN last_name IS NULL THEN ” ELSE ‘ ‘+last_name END

Làm việc với giá trị NULL trong SQL

  • Tác giả: helpex.vn
  • Đánh giá: 3 ⭐ ( 7944 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Giá trị NULL là một kiểu dữ liệu đại diện cho một giá trị không xác định . Nó không tương đương với một chuỗi rỗng hoặc số không. Giả sử bạn có một bảng nhân viên có chứa các cột như…

Constraints – Ràng buộc toàn vẹn dữ liệu trong SQL – Deft Blog

  • Tác giả: shareprogramming.net
  • Đánh giá: 4 ⭐ ( 4972 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Ràng buộc (Constraint) là các quy tắc được áp dụng trên các cột dữ liệu của một bảng. Chúng được sử dụng để kiểm tra tính hợp lệ của dữ

Tuyển tập những câu hỏi phỏng vấn SQL thường gặp nhất

  • Tác giả: www.topcv.vn
  • Đánh giá: 5 ⭐ ( 1004 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Nắm rõ những câu hỏi phỏng vấn SQL sẽ giúp bạn chủ động hơn, cơ hội trúng tuyển vì vậy mà tăng cao. TopCV sẽ tổng hợp một số câu hỏi phỏng vấn SQL thường gặp

Hướng dẫn tìm hiểu về NULL và NOT NULL trong MySQL

  • Tác giả: gitiho.com
  • Đánh giá: 3 ⭐ ( 8959 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Null là gì? Null ảnh hưởng thế nào tới quá trình làm việc của bạn? Hãy cùng Gitiho tìm hiểu về Null và Not Null trong MySQL nhé…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  THUẬT TOÁN ĐỆ QUY MINH HỌA BẰNG FREE PASCAL - đệ quy pascal

By ads_php