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:


Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl