Instrukcja warunkowa IIF w SQL Server

SQL Server IIF – instrukcja warunkowa (IIF THEN ELSE)

Obok instrukcji SELECT CASE w SQL Server, w poleceniach SELECT możesz użyć uproszczonej instrukcji MsSQL IIF. Nie jest to ta sama instrukcja, którą stosujesz w blokach procedur T-SQL (T-SQL IF). Instrukcja IIF stosowana jest w języku zapytań, nie języku proceduralnym. Poniżej wyjaśniam różnicę pomiędzy trzeba podobnymi konstrukcjami, gdyż ich podobieństwo może być na początku mylące.

  • MsSQL IIF – Najprostsza instrukcja warunkowa, której możesz użyć w SQL Server. Instrukcji tej możesz używać w dowolnym poleceniu DML i DQL. To właśnie o tej instrukcji napisany jest ten artykuł.
  • MsSQL CASE – Instrukcja warunkowa rozszerzona. Instrukcji tej możesz używać w dowolnym poleceniu DML i DQL. Możesz jej używać zamiennie z instrukcją IIF, jednak zazwyczaj instrukcji SELECT CASE warto używać do bardziej rozbudowanych przypadków. W prostych przypadkach (pojedynczy warunek bez zagnieżdżeń) zalecam używanie IIF.
  • T-SQL IF – Instrukcja warunkowa w języku proceduralnym SQL Sever. Nie wiąż jej bezpośrednio z językiem SQL, a językiem proceduralnym baz danych. Dowiesz się o tym więcej w kolejnych rozdziałach kursu (T-SQL IF THEN ELSE)

Jak używać instrukcji warunkowej IIF w MsSQL?

Składnia MsSQL IIF THEN ELSE wygląda następująco:

IIF(warunek_logic, THEN_instrukcja_lub_wartosc_gdy_warunek_spelniony, ELSE_instrukcja_lub_wartosc_gdy_warunek_NIE_spelniony)

Poniżej prosty kod przykład instrukcji SQL Server IIF na bazie AdventureWorks

USE AdventureWorks2016_EXT
go

SELECT
ProductID,
Name,
iif(standardcost >= 200, '200 and more', 'less than 200') as standard_cost
FROM [AdventureWorks2016_EXT].[Production].[Product]
;
Zagnieżdżona instrukcja IIF w SQL Server, MsSQL, Transact-SQL
SQL Server IIF – Instrukcja warunkowa IIF THEN ELSE w SQL Server

Zagnieżdżona instrukcja IIF w SQL Server, MsSQL, Transact-SQL

Instrukcja IIF może być zagnieżdżona w innej instrukcji IIF. Szczerze przyznam, że do trudniejszych przypadków powinieneś używać instrukcji SQL SELECT CASE. Nie ma jednak przeszkód, by zrobić IIF wewnątrz innej instrukcji IIF. Kolejną instrukcję IIF możesz wstawić zarówno w część THEN, jak i w część ELSE. Poniżej przykład:

USE AdventureWorks2016_EXT
go

SELECT
ProductID,
Name,
iif(standardcost >= 200,
    iif(standardcost <= 300, 'more than 200 and less than 300', 'more than 300'), 
'less than 200') as standard_cost
FROM [AdventureWorks2016_EXT].[Production].[Product]
;

Zagnieżdżona instrukcja IIF w SQL Server, MsSQL, Transact-SQL
Zagnieżdżona instrukcja IIF w SQL Server, MsSQL, Transact-SQL

Dzięki za przeczytanie artykułu do końca. Jeśli chcesz nauczyć się pisania skryptów w SQL Server, tutaj link do całego kursu: Kurs MsSQL. W kursie nauczysz się w jaki sposób prawidłowo pisać kod SQL, a także poznasz ciekawe przykłady użycia SQL i baz danych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *