IIF(...)不是公认的内置功能

时间:2012-08-20 09:18:51

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

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

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

但是我收到了一个错误:

  

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

IIF()仅与更高版本兼容吗?

我可以使用其他功能吗?

4 个答案:

答案 0 :(得分:40)

正如其他人所说,IIF来自SQL 2012.在此之前,您可以使用CASE

SET @SomeVar = @SomeOtherVar + CASE
 WHEN @SomeBool
 THEN 'value when true'
 ELSE 'value when false'
END

答案 1 :(得分:8)

SQL Server 2012中的新功能Programmability Enhancements

  

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

     

...

     

答案 2 :(得分:4)

对于SQL Server 2008 R2及之前的任何版本,

IIF 有效。

SQL Server 2012中引入了

IIF(在我链接到的文档页面上没有链接到以前的版本)。

答案 3 :(得分:4)

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

E.g。

DECLARE @Answer VARCHAR(3) = 'YES'

IF @Answer = 'Yes'
BEGIN 
--Do Something if true
END
ELSE
-- Do Soemthing if false