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 можно выполнить рефакторинг.

user2505560
источник
13
Мне нравятся твои рассуждения. Можете ли вы поддержать это, процитировав некоторую документацию?
Петр Иван