2012-07-18 53 views
32

Estoy tratando de usar IIF() en una declaración de selección. La expresión booleana comprueba si un valor de campo es igual a una cadena vacía. La sintaxis es así:La instrucción IIF de SQL Server 2008 no parece activada

SELECT IIF(field = '','ONe action','Another') 

estoy consiguiendo el error "error de sintaxis cerca ="

que intentaron una prueba sencilla:

SELECT IIF(2 > 1, 'yes','no') 

y yo estoy haciendo "syntax errror near >"

Esto me lleva a creer que IIF no funciona en absoluto.

Estoy usando SQL SERVER 2008 R2, ¿hay algo que deba configurarse para permitir que IIF() funcione? ¿Hay algo sobre la sintaxis que me falta? Mi prueba es simple y puedo obtener el error de sintaxis.

Cualquier ayuda sería apreciada. ¡Muchas gracias!

+3

Esto es nuevo para 2012 –

Respuesta

61

Como se indica, IIF es una característica SQL2012.

Reemplazar su IIF con un CASE (¿Qué es lo que SQL 2012 haría de todos modos)

SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END 
25

IFF comenzando en SQL Server 2012. Así que utilice 'caso' en su lugar.

Si está buscando una forma más compacta (función en lugar de casos) en SQL Server 2008 puede utilizar:

isnull((select 'yes' where 2 > 1),'no') 

en lugar de:

SELECT IIF(2 > 1, 'yes','no') 

Luego, su estado de cuenta ser:

SELECT isnull((select 'yes' where 2 > 1),'no')

1
DECLARE @a int=45 

DECLARE @b int=40 

SELECT 
     CASE 
     WHEN @A>@B THEN 'True' 

ELSE 'FALSE'   
     END 

Puede utilizar esta solución en lugar de IIF.

Cuestiones relacionadas