2012-07-18 100 views
32

我试图在select语句中使用IIF()。布尔表达式检查字段值是否等于空字符串。该语法如下:似乎没有启用SQL Server 2008 IIF语句

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

我越来越

我想一个简单的测试误差 “近=语法错误”:

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

和我得到"syntax errror near >"

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

我正在使用SQL SERVER 2008 R2,是否有需要配置以允许IIF()工作?有什么关于我失踪的语法?我的测试很简单,我仍然得到语法错误。

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

+3

这是2012年新增的 – 2012-07-18 11:55:04

回答

61

如前所述,IIF是一个SQL2012功能。

替换您的IIFCASE(这是SQL 2012无论如何都会做)

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

IFF可从SQL Server 2012的开头,所以用 '案例' 代替。

如果您正在寻找在SQL Server 2008中的更紧凑的形式(函数代替的情况下),可以使用:的

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

代替:

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

然后你的声明将成为:

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 

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