我正在尝试在Microsoft SQL Server 2008 R2中使用此代码:
SET @SomeVar = @SomeOtherVar +
IIF(@SomeBool, 'value when true', 'value when false')
但我出现了一个错误:
IIF(...)
不是已知的内置函数名称
IIF()
只与较新版本兼容吗?
是否有可以使用的替代函数?
我正在尝试在Microsoft SQL Server 2008 R2中使用此代码:
SET @SomeVar = @SomeOtherVar +
IIF(@SomeBool, 'value when true', 'value when false')
但我出现了一个错误:
IIF(...)
不是已知的内置函数名称
IIF()
只与较新版本兼容吗?
是否有可以使用的替代函数?
IIF
来自 SQL 2012。在此之前,您可以使用 CASE
:
SET @SomeVar = @SomeOtherVar + CASE
WHEN @SomeBool
THEN 'value when true'
ELSE 'value when false'
END
IIF
而不是IFF
。否则,请检查数据库的兼容性级别设置。 - RichardSQL Server 2012有哪些新功能,编程增强:
SQL Server 2012引入了14个新的内置函数。这些函数通过模拟许多桌面应用程序的表达式语言中的功能,简化了信息工作者的迁移路径。然而,这些函数对于经验丰富的SQL Server用户也是有用的。
...
如果IF语句不在SELECT之内,您也可以使用标准的IF语句。
例如:
DECLARE @Answer VARCHAR(3) = 'YES'
IF @Answer = 'Yes'
BEGIN
--Do Something if true
END
ELSE
-- Do Soemthing if false
IIF
在SQL Server 2008 R2及之前的版本中无效。
IIF
是在SQL Server 2012中引入的(文档页面上没有链接到之前的版本)。请注意,HTML标签已保留。
IIF
的位置上打成了IFF
。两个“是”的人赞成,一个不赞成。 - ruffin