我有一个SQL Server 2016 Express实例和一个兼容级别为100(SQL Server 2008)的数据库。
我在该数据库上运行了此查询:
SELECT IIF(2 > 1, 'yes','no')
我希望查询失败,因为直到SQL Server 2012(兼容级别110)才引入IIF()
。但是,查询成功并输出yes
。
为什么起作用?
答案 0 :(得分:1)
据我了解,兼容性级别用于使您更轻松地迁移数据库,因此,较高版本的某些功能可能在较低兼容性级别上起作用。请从dbaexchange检查此question。阐明了这个问题。
答案 1 :(得分:0)
将IIF转换为CASE的事实也对该功能的行为的其他方面产生影响。由于CASE表达式最多只能嵌套10个级别,因此IIF语句也只能最多嵌套10个级别