SQL Server IIF против CASE


87

Недавно я узнал о доступности IIFфункции в SQL Server 2012. Я всегда использую вложенные CASEв свои запросы. Я хочу знать точную цель IIFзаявления и когда мы должны предпочитают использовать IIFболее CASEзаявление в запросе. Я в основном использую вложенные CASEзапросы.

Спасибо за вклад.


9
IIF - это просто сокращение для простого оператора CASE. Он даже переведен в оператор case для оптимизации и выполнения запросов: technet.microsoft.com/en-us/library/hh213574.aspx
Sam

Жаль, что это сокращение не является частью стандарта (что это такое в наши дни? ANSISQL?), Поскольку его намного легче читать. Но тогда T-SQL всегда был немного ... многословным.
Нил Барнуэлл

Ответы:


144

IIFтакое же, как CASE WHEN <Condition> THEN <true part> ELSE <false part> END. План запроса будет таким же. Это, пожалуй, «синтаксический сахар» в первоначальном виде.

CASE переносится на все платформы SQL, тогда как IIF специфичен для SQL SERVER 2012+.


6
Возможно, чтобы разработчикам Access / VB было проще запомнить синтаксис.
интересно-имя-здесь

20

IIF - это нестандартная функция T-SQL. Он был добавлен в SQL SERVER 2012, чтобы Access мог перейти на SQL Server без предварительного рефакторинга IIF в CASE. После полной миграции базы данных Access в SQL Server можно выполнить рефакторинг.


13
Мне нравятся твои рассуждения. Можете ли вы поддержать это, процитировав некоторую документацию?
Петр Иван
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.