28

我正在尝试在 Microsoft SQL Server 2008 R2 中使用它:

SET @SomeVar = @SomeOtherVar +
  IIF(@SomeBool, 'value when true', 'value when false')

但我收到一个错误:

IIF(...)不是公认的内置函数名

是否IIF()只与更高版本兼容?

我可以使用其他功能吗?

4

4 回答 4

43

IIF来自 SQL 2012。在此之前,您可以使用CASE

SET @SomeVar = @SomeOtherVar + CASE
 WHEN @SomeBool
 THEN 'value when true'
 ELSE 'value when false'
END
于 2012-08-20T09:27:42.547 回答
9

SQL Server 2012 中的新增功能,可编程性增强

SQL Server 2012 引入了 14 个新的内置函数。这些功能通过模拟在许多桌面应用程序的表达语言中发现的功能,简化了信息工作者的迁移路径。然而,这些函数对于有经验的 SQL Server 用户也很有用。

...

于 2012-08-20T09:26:54.990 回答
4

IIF对SQL Server 2008 R2 和之前的任何版本无效

IIF在 SQL Server 2012 中引入(在我链接到的文档页面上没有指向以前版本的链接)。

于 2012-08-20T09:25:12.430 回答
4

如果它在选择之外,您也可以使用标准 IF 语句。

例如

DECLARE @Answer VARCHAR(3) = 'YES'

IF @Answer = 'Yes'
BEGIN 
--Do Something if true
END
ELSE
-- Do Soemthing if false
于 2013-12-23T05:09:15.057 回答