SQL Server IIF vs KASUS

87

Saya baru-baru ini mengetahui tentang ketersediaan IIFfungsi di SQL Server 2012. Saya selalu menggunakan bersarang CASEdalam kueri saya. Saya ingin tahu tujuan pasti dari IIFpernyataan tersebut dan kapan sebaiknya kita lebih suka menggunakan IIFlebih dari CASEPernyataan dalam kueri. Saya kebanyakan menggunakan CASEkueri bersarang .

Terima kasih atas semua masukannya.

orang baru
sumber
9
IIF hanyalah singkatan dari pernyataan CASE sederhana. Itu bahkan diterjemahkan ke dalam pernyataan kasus untuk optimasi dan eksekusi kueri: technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan
Sayangnya tulisan cepat bukan bagian dari standar (sekarang apa? ANSISQL?) Karena lebih mudah dibaca. Tapi kemudian T-SQL selalu sedikit ... "bertele-tele".
Neil Barnwell

Jawaban:

144

IIFsama dengan CASE WHEN <Condition> THEN <true part> ELSE <false part> END. Rencana kueri akan sama. Ini, mungkin, "gula sintaksis" seperti yang diterapkan pada awalnya.

CASE portabel di semua platform SQL sedangkan IIF adalah SQL SERVER 2012+ khusus.

Karl Kieninger
sumber
6
Mungkin untuk mempermudah pengembang Access / VB untuk mengingat sintaks.
nama-menarik-di sini
20

IIF adalah fungsi T-SQL non-standar. Itu ditambahkan ke SQL SERVER 2012, sehingga Access bisa bermigrasi ke SQL Server tanpa refactoring IIF ke CASE sebelumnya. Setelah Access db dimigrasi sepenuhnya ke SQL Server, Anda dapat melakukan refactor.

pengguna2505560
sumber
13
Saya suka alasan Anda. Bisakah Anda mendukungnya dengan mengutip beberapa dokumentasi?
Peter Ivan