SQL Server IIF vs CASE


87

Recentemente, fiquei sabendo da disponibilidade de IIFfunção no SQL Server 2012. Sempre uso aninhado CASEem minhas consultas. Quero saber o propósito exato da IIFinstrução e quando devemos preferir usar IIFa CASEinstrução na consulta. Eu uso principalmente aninhado CASEem minhas consultas.

Obrigado por todas as entradas.


9
IIF é apenas uma abreviação para uma instrução CASE simples. Ele é até traduzido em uma declaração de caso para otimização e execução de consulta: technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan

É uma pena que a abreviação não faça parte do padrão (o que é hoje em dia? ANSISQL?), Pois é muito mais fácil de ler. Mas o T-SQL sempre foi um pouco ... "prolixo".
Neil Barnwell de

Respostas:


144

IIFé o mesmo que CASE WHEN <Condition> THEN <true part> ELSE <false part> END. O plano de consulta será o mesmo. É, talvez, "açúcar sintático", conforme implementado inicialmente.

CASE é portátil em todas as plataformas SQL, enquanto o IIF é específico do SQL SERVER 2012+.


6
Provavelmente para tornar mais fácil para os desenvolvedores do Access / VB lembrar a sintaxe.
nome-interessante-aqui

20

IIF é uma função T-SQL não padrão. Ele foi adicionado ao SQL SERVER 2012, para que o Access pudesse migrar para o SQL Server sem refatorar os IIFs para CASE de antemão. Depois que o banco de dados do Access é totalmente migrado para o SQL Server, você pode refatorar.


13
Eu gosto do seu raciocínio. Você pode apoiá-lo citando alguma documentação?
Peter Ivan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.