choose sql sql-server-2008 tsql sql-server-2005 sql-server-2008-r2

choose - sql iif vs case



IIF(…) no es una función incorporada reconocida (4)

Estoy tratando de usar esto en Microsoft SQL Server 2008 R2:

SET @SomeVar = @SomeOtherVar + IIF(@SomeBool, ''value when true'', ''value when false'')

Pero me sale un error:

IIF(...) no es un nombre de función incorporado reconocido

¿Es IIF() solo compatible con una versión posterior?

¿Hay alguna función alternativa que pueda usar?


Como han dicho otros, IIF proviene de SQL 2012. Antes de eso, puedes usar CASE :

SET @SomeVar = @SomeOtherVar + CASE WHEN @SomeBool THEN ''value when true'' ELSE ''value when false'' END


Novedades de SQL Server 2012, mejoras en la capacidad de programación :

SQL Server 2012 introduce 14 nuevas funciones integradas. Estas funciones facilitan el camino de la migración para los trabajadores de la información al emular la funcionalidad que se encuentra en los lenguajes de expresión de muchas aplicaciones de escritorio. Sin embargo, estas funciones también serán útiles para usuarios experimentados de SQL Server.

...


También puede utilizar la instrucción IF estándar si está fuera de una selección.

P.ej

DECLARE @Answer VARCHAR(3) = ''YES'' IF @Answer = ''Yes'' BEGIN --Do Something if true END ELSE -- Do Soemthing if false


IIF no es válido para SQL Server 2008 R2 y ninguna versión anterior.

IIF() se introdujo en SQL Server 2012 (no hay un enlace a versiones anteriores en la página de documentación a la que he vinculado).