SQL Server 2008 IIF语句似乎未启用

The*_*hod 35 sql sql-server sql-server-2008 sql-server-2008-r2

我想IIF()在select语句中使用.布尔表达式检查字段值是否等于空字符串.语法是这样的:

SELECT IIF(field = '','ONe action','Another')
Run Code Online (Sandbox Code Playgroud)

我收到错误"语法错误接近="

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

SELECT IIF(2 > 1, 'yes','no')
Run Code Online (Sandbox Code Playgroud)

我正在接受 "syntax errror near >"

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

我正在使用SQL SERVER 2008 R2,是否需要配置一些东西以允许IIF()工作?有什么关于我缺少的语法吗?我的测试很简单,但仍然会出现语法错误.

任何帮助,将不胜感激.非常感谢!

pod*_*ska 70

如上所述,IIF是SQL2012功能.

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

 SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
Run Code Online (Sandbox Code Playgroud)


Ale*_*der 27

IFF 从SQL Server 2012开始可用.因此请使用"Case".

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

isnull((select 'yes' where 2 > 1),'no')
Run Code Online (Sandbox Code Playgroud)

代替:

SELECT IIF(2 > 1, 'yes','no')
Run Code Online (Sandbox Code Playgroud)

然后你的陈述将是:

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


Aar*_*and 11

IIF在SQL Server 2012引入的,因此它在SQL Server 2008或SQL Server 2008 R2中不起作用.