SQL Server IIF frente a CASE


87

Recientemente llegué a conocer la disponibilidad de IIFfunciones en SQL Server 2012. Siempre uso anidado CASEen mis consultas. Quiero saber el propósito exacto de la IIFdeclaración y cuándo deberíamos preferir usar IIFen lugar de CASEDeclaración en la consulta. Principalmente uso anidado CASEen mis consultas.

Gracias por todas las entradas.


9
IIF es solo una abreviatura de una declaración CASE simple. Incluso se traduce en una declaración de caso para la optimización y ejecución de consultas: technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan

Es una pena que la taquigrafía no forme parte del estándar (¿qué es en estos días? ¿ANSISQL?) Ya que es mucho más fácil de leer. Pero entonces T-SQL siempre ha sido un poco ... "prolijo".
Neil Barnwell

Respuestas:


144

IIFes lo mismo que CASE WHEN <Condition> THEN <true part> ELSE <false part> END. El plan de consulta será el mismo. Es, quizás, "azúcar sintáctico" como se implementó inicialmente.

CASE es portátil en todas las plataformas SQL, mientras que IIF es específico para SQL SERVER 2012+.


6
Probablemente para facilitar que los desarrolladores de Access / VB recuerden la sintaxis.
nombre-interesante-aquí

20

IIF es una función de T-SQL no estándar. Se agregó a SQL SERVER 2012, para que Access pudiera migrar a SQL Server sin refactorizar los IIF a CASE de antemano. Una vez que la base de datos de Access se haya migrado por completo a SQL Server, puede refactorizar.


13
Me gusta tu razonamiento. ¿Puede apoyarlo citando alguna documentación?
Peter Ivan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.