2014-04-03 13 views
38

Gần đây tôi đã biết về tính khả dụng của chức năng IIF trong SQL Server 2012. Tôi luôn sử dụng CASE lồng nhau trong các truy vấn của mình. Tôi muốn biết mục đích chính xác của tuyên bố IIF và khi nào chúng ta nên sử dụng IIF trên CASE Statement trong truy vấn. Tôi chủ yếu sử dụng CASE lồng nhau trong các truy vấn của mình.SQL Server IIF vs CASE

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

+3

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

+0

Thật đáng tiếc là viết tắt không phải là một phần của tiêu chuẩn (nó là gì những ngày này? ANSISQL?) vì nó dễ đọc hơn nhiều. Nhưng sau đó T-SQL đã luôn luôn là một chút ... "wordy". –

Trả lời

72

IIF giống với CASE WHEN <Condition> THEN <true part> ELSE <false part> END. Kế hoạch truy vấn sẽ giống nhau. Đó là, có lẽ, "đường cú pháp" như ban đầu được thực hiện.

TRƯỜNG HỢP là di động trên tất cả các nền tảng SQL trong khi IIF là SQL SERVER 2012+ cụ thể.

+1

Có thể giúp các nhà phát triển Access/VB dễ dàng nhớ cú pháp hơn. – GibralterTop

7

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 tái cấu trúc IIF's CASE trước khi bàn tay. Khi truy cập db được di chuyển hoàn toàn vào SQL Server, bạn có thể cấu trúc lại.

+2

Tôi thích lý do 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? –

Các vấn đề liên quan