38

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

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

我收到错误“= 附近的语法错误

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

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

我得到"syntax errror near >"

这让我相信这IIF根本行不通。

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

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

4

4 回答 4

75

如前所述,IIF是 SQL2012 功能。

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

 SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
于 2012-07-18T12:15:27.247 回答
30

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')

于 2012-11-18T09:58:43.073 回答
12

IIF在 SQL Server 2012 中引入的,所以这就是它在 SQL Server 2008 或 SQL Server 2008 R2 中不起作用的原因。

于 2012-07-18T11:55:04.677 回答
2
DECLARE @a int=45

DECLARE @b int=40

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

 ELSE 'FALSE'         
      END

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

于 2017-04-15T07:23:46.803 回答