SQL Server 2008 IIF语句似乎未启用

时间:2012-07-18 11:54:36

标签: sql sql-server sql-server-2008 sql-server-2008-r2

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

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

我收到错误“语法错误near =”

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

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

我正在"syntax errror near >"

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

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

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

4 个答案:

答案 0 :(得分:68)

如上所述,IIF是SQL2012的一项功能。

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

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

答案 1 :(得分:27)

IFF从SQL Server 2012开始可用。因此请改用“Case”。

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

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

而不是:

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

然后你的陈述将是:

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

答案 2 :(得分:11)

IIFintroduced in SQL Server 2012,因此它无法在SQL Server 2008或SQL Server 2008 R2中运行。

答案 3 :(得分:2)

DECLARE @a int=45

DECLARE @b int=40

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

 ELSE 'FALSE'         
      END

您可以使用此解决方案代替IIF