Функция SQL Server IIF () работает даже с уровнем совместимости 100 - PullRequest
2 голосов
/ 21 мая 2019

У меня есть экземпляр SQL Server 2016 Express и база данных с уровнем совместимости = 100 (SQL Server 2008).

Я выполнил этот запрос в этой базе данных:

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

Я ожидал, что запрос не будет выполнен, поскольку IIF() не был представлен до SQL Server 2012 (уровень совместимости 110). Однако запрос завершается успешно и выдает yes.

Почему это работает?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Насколько я понимаю, уровни совместимости позволяют упростить миграцию баз данных, поэтому некоторые функции более высоких версий могут работать на более низких уровнях совместимости. Пожалуйста, проверьте этот вопрос от dbaexchange. Это проливает свет на проблему.

0 голосов
/ 21 мая 2019

Тот факт, что IIF переведен на CASE, также влияет на другие аспекты поведения этой функции.Поскольку выражения CASE могут быть вложены только до уровня 10, операторы IIF также могут быть вложены только до максимального уровня 10

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...