SQL Server IIF so với CASE


87

Gần đây tôi đã biết về tính khả dụng của IIFhàm trong SQL Server 2012. Tôi luôn sử dụng hàm lồng CASEtrong các truy vấn của mình. Tôi muốn biết mục đích chính xác của IIFcâu lệnh và khi nào chúng ta nên sử dụng IIFhơn CASEStatement trong truy vấn. Tôi chủ yếu sử dụng lồng CASEtrong các truy vấn của mình.

Cảm ơn cho tất cả các đầu vào.


9
IIF chỉ là cách viết tắt của một câu lệnh CASE đơn giản. Nó thậm chí còn được dịch thành một câu lệnh tình huống để tối ưu hóa và thực thi truy vấn: technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan

Thật tiếc khi tốc ký không phải là một phần của tiêu chuẩn (ngày nay nó là gì? ANSISQL?) Vì nó dễ đọc hơn nhiều. Nhưng rồi T-SQL luôn hơi ... "nặng lời".
Neil Barnwell

Câu trả lời:


144

IIFgiống như CASE WHEN <Condition> THEN <true part> ELSE <false part> END. Kế hoạch truy vấn sẽ giống nhau. Có lẽ nó là "đường cú pháp" như được triển khai ban đầu.

CASE có thể di động trên tất cả các nền tảng SQL trong khi IIF là SQL SERVER 2012+ cụ thể.


6
Có lẽ để giúp các nhà phát triển Access / VB ghi nhớ cú pháp dễ dàng hơn.
thú vị-tên-ở đây

20

IIF là một hàm T-SQL không chuẩn. Nó đã được thêm vào SQL SERVER 2012, để Access có thể di chuyển sang SQL Server mà không cần cấu trúc lại IIF thành CASE trước đó. Khi db Access được di chuyển hoàn toàn vào SQL Server, bạn có thể cấu trúc lại.


13
Tôi thích lý luận của bạn. Bạn có thể hỗ trợ nó bằng cách trích dẫn một số tài liệu?
Peter Ivan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.