IIF(...)没有一个公认的内置函数(IIF(…) not a recognized built-

2019-07-31 02:27发布

我试图在Microsoft SQL Server 2008 R2使用此:

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

但是,我得到一个错误:

IIF(...)是无法识别的内置函数名称

IIF()只用最新版本的兼容?

是否有备用的功能可以使用吗?

Answer 1:

正如其他人所说,IIF来自SQL 2012年那之前,你可以使用CASE

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


Answer 2:

什么是新的SQL Server 2012中, 可编程性增强功能 :

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

...

  • IIF(事务处理SQL)


Answer 3:

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

IIF在SQL Server 2012中引入的(没有联系到以前的版本我已经链接到文档页面)。



Answer 4:

你也可以使用IF语句的标准,如果是外选择。

DECLARE @Answer VARCHAR(3) = 'YES'

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


文章来源: IIF(…) not a recognized built-in function