SQL Server IIF()函数即使在兼容级别为100的情况下也可以工作

时间:2019-05-21 16:08:46

标签: sql-server

我有一个SQL Server 2016 Express实例和一个兼容级别为100(SQL Server 2008)的数据库。

我在该数据库上运行了此查询:

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

我希望查询失败,因为直到SQL Server 2012(兼容级别110)才引入IIF()。但是,查询成功并输出yes

为什么起作用?

2 个答案:

答案 0 :(得分:1)

据我了解,兼容性级别用于使您更轻松地迁移数据库,因此,较高版本的某些功能可能在较低兼容性级别上起作用。请从dbaexchange检查此question。阐明了这个问题。

答案 1 :(得分:0)

将IIF转换为CASE的事实也对该功能的行为的其他方面产生影响。由于CASE表达式最多只能嵌套10个级别,因此IIF语句也只能最多嵌套10个级别