SQL Server IIF против CASE

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

Спасибо за все материалы.


person neophyte    schedule 03.04.2014    source источник
comment
IIF — это просто сокращение для простого оператора CASE. Он даже переведен в оператор case для оптимизации и выполнения запросов: technet.microsoft. com/en-us/library/hh213574.aspx   -  person Sam DeHaan    schedule 03.04.2014
comment
Жаль, что стенография не является частью стандарта (что это такое в наши дни? ANSISQL?), поскольку ее намного легче читать. Но с другой стороны, T-SQL всегда был немного... многословен.   -  person Neil Barnwell    schedule 21.02.2017


Ответы (2)


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

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

person Karl Kieninger    schedule 03.04.2014
comment
Вероятно, чтобы облегчить разработчикам Access/VB запоминание синтаксиса. - person interesting-name-here; 02.06.2016

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

person user2505560    schedule 17.08.2016
comment
Мне нравятся твои рассуждения. Можете ли вы поддержать это, сославшись на некоторые документы? - person Peter Ivan; 22.03.2017