SQL Server IIF vs CASE


87

Recentemente sono venuto a conoscenza della disponibilità di IIFfunzioni in SQL Server 2012. Uso sempre nidificato CASEnelle mie query. Voglio sapere lo scopo esatto della IIFdichiarazione e quando dovremmo preferiscono utilizzare IIFnel corso CASEDichiarazione nella query. Uso principalmente annidato CASEnelle mie query.

Grazie per tutti gli stimoli.


9
IIF è solo una scorciatoia per una semplice dichiarazione CASE. È persino tradotto in un'istruzione case per l'ottimizzazione e l'esecuzione delle query: technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan

1
È un peccato che la stenografia non faccia parte dello standard (cos'è di questi tempi? ANSISQL?) In quanto è molto più facile da leggere. Ma poi T-SQL è sempre stato un po '... "prolisso".
Neil Barnwell,

Risposte:


144

IIFè lo stesso di CASE WHEN <Condition> THEN <true part> ELSE <false part> END. Il piano di query sarà lo stesso. Forse è "zucchero sintattico" come inizialmente implementato.

CASE è portabile su tutte le piattaforme SQL mentre IIF è specifico per SQL SERVER 2012+.


6
Probabilmente per rendere più facile agli sviluppatori di Access / VB ricordare la sintassi.
nome-interessante-qui

20

IIF è una funzione T-SQL non standard. È stato aggiunto a SQL SERVER 2012, in modo che Access potesse migrare a SQL Server senza prima eseguire il refactoring degli IIF in CASE. Dopo aver migrato completamente il database di Access in SQL Server, è possibile eseguire il refactoring.


13
Mi piace il tuo ragionamento. Puoi supportarlo citando della documentazione?
Peter Ivan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.