W MS SQL Server 2012 język T-SQL został rozszerzony o wiele funkcji. W grupie funkcji logicznych można wyróżnić dwie:
- Funcja logiczna IIF()
- Funkcja logiczna Choose()
Funkcja logiczna IIF()
Nowa funkcja logiczna IIF(), dostępna w MS SQL Server 2012 zwraca jedną z dwóch wartości w zależności od tego, czy wynikiem wyrażenia logicznego jest PRAWDA(TRUE) lub FAŁSZ(FALSE).
Poniżej przedstawiono składnię:
IIF ( boolean_expression, true_value, false_value )
gdzie:
boolean_expression – poprawne wyrażenie logiczne
true_value – wartość zwracana w przypadku gdy wartością wyrażenia boolean_expression jest True.
false_value – wartość zwracanaw przypadku gdy wartością wyrażenia boolean_expression jest False.
A oto przykład zastosowania:
SELECT IIF ( 64 > 20, 'TRUE', 'FALSE' ) AS Result1; SELECT IIF ( 32 > 50, 'TRUE', 'FALSE' ) AS Result2;
Można również stosować zagnieżdżanie funkcji IIF(), np.:
DECLARE @value INT = 100, @marker varchar(4) = 'Free'; SELECT IIF(@value < 100, IIF(@marker = 'Free', 'Free pass', 'access alowed'), 'Number too big') as 'Example 1'; GO DECLARE @value INT = 10, @marker varchar(4) = 'Free'; SELECT IIF(@value < 100, IIF(@marker = 'Free', 'Free pass', 'access alowed'), 'Number too big') as 'Example 2'; GO DECLARE @value INT = 10, @marker varchar(4) = 'NOT Free'; SELECT IIF(@value < 100, IIF(@marker = 'Free', 'Free pass', 'access alowed'), 'Number too big') as 'Example 3'; GO
W wyniku otrzymujemy:
Należy pamiętać, że dopuszczalna ilość zagnieżdżeń funkcji IIF() wynosi 10.
Funkcja logiczna Choose()
Nowa funkcja logiczna Choose(), dostępna w MS SQL Server 2012 zwraca element o określonym indeksie z listy wartości, które są dostępne.
Poniżej przedstawiono składnię:
CHOOSE ( index, val_1, val_2 [, val_n ] )
gdzie:
index -wyrażenie typu int, reprezentujące numer elementu do wyboru z listy. Jeżeli wartość jest inna niż int, jest dokonywana niejawna konwersja na int. Jeżeli wartość przekroczy granice tablicy wartości zwróconą wartościa będzie NULL.
val_1, val_2 [, val_n ] – lista danaych dowolnego typu
Poniżej przedstawiono przykład użycia:
SELECT CHOOSE ( 3, 'Kowalski' , 'Malinowski' , 'Nowak' , 'Iksinski' ) AS Result;
oraz otrzymany wynik:
Linki: