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.


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.


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.


13
Saya suka alasan Anda. Bisakah Anda mendukungnya dengan mengutip beberapa dokumentasi?
Peter Ivan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.