SQL Server 2008 IIF语句似乎未启用

SQL Server 2008 IIF语句似乎未启用,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,我试图在select语句中使用IIF()。布尔表达式检查字段值是否等于空字符串。语法如下: SELECT IIF(field = '','ONe action','Another') 我得到错误“语法错误接近=” 我尝试了一个简单的测试: SELECT IIF(2 > 1, 'yes','no') 我发现“语法错误接近>” 这让我相信IIF根本不起作用 我使用的是SQL SERVER 2008 R2,是否需要对其进行配置以允许IIF()工作?语法方面有什么我遗漏的吗?我的测试非常简单,

我试图在select语句中使用
IIF()。布尔表达式检查字段值是否等于空字符串。语法如下:

SELECT IIF(field = '','ONe action','Another')
我得到错误“语法错误接近=”

我尝试了一个简单的测试:

SELECT IIF(2 > 1, 'yes','no')
我发现
“语法错误接近>”

这让我相信
IIF
根本不起作用

我使用的是SQL SERVER 2008 R2,是否需要对其进行配置以允许IIF()工作?语法方面有什么我遗漏的吗?我的测试非常简单,但仍然会出现语法错误


任何帮助都将不胜感激。多谢

IIF
was,因此它在SQL Server 2008或SQL Server 2008 R2中不起作用。如前所述,
IIF
是SQL2012的一项功能

将您的
IIF
替换为
CASE
(SQL 2012无论如何都会这样做)


IFF
从SQL Server 2012开始提供。所以用“Case”代替

如果您想在SQL Server 2008中寻找更紧凑的表单(函数而不是大小写),可以使用:

isnull((select 'yes' where 2 > 1),'no')
而不是:

SELECT IIF(2 > 1, 'yes','no')
那么你的声明将是:

SELECT isnull((在2>1的地方选择'yes','no')

您可以使用此解决方案而不是
IIF

SELECT IIF(2 > 1, 'yes','no')
DECLARE @a int=45

DECLARE @b int=40

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

 ELSE 'FALSE'         
      END