SQL Server IIF проти CASE


87

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

Дякуємо за всі вкладені дані.


9
IIF - це просто скорочення простої заяви CASE. Це навіть перекладається у формуляр
Сем ДеХан

Шкода, що скорочення не є частиною стандарту (що це сьогодні? ANSISQL?), Оскільки його набагато легше читати. Але тоді T-SQL завжди був трохи ... "багатослівним".
Ніл Барнуелл

Відповіді:


144

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

CASE є портативним на всіх платформах SQL, тоді як IIF - це специфікація SQL SERVER 2012+.


6
Можливо, щоб спростити розробникам Access / VB запам'ятовувати синтаксис.
interesting-name-here

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.