V SQL Server, IIF() funkce (nezaměňovat s IF statement) je podmíněná funkce, která vrací druhý nebo třetí argument na základě vyhodnocení prvního argumentu.
Je to zkrácený způsob psaní CASE výraz. Je to logicky ekvivalentní CASE WHEN X THEN Y ELSE Z END za předpokladu IIF(X, Y, Z) .
IIF() je zkratka pro okamžité IF .
Syntaxe
Syntaxe vypadá takto:
IIF ( boolean_expression, true_value, false_value ) Kde:
- booleovský_výraz je výraz, který má být vyhodnocen.
- skutečná_hodnota je vráceno, pokud booleovský_výraz je pravda.
- false_value je vráceno, pokud booleovský_výraz je nepravdivé nebo neznámé.
Stejně jako u CASE výrazy, IIF() příkazy lze vnořit pouze do maximální úrovně 10.
Příklad
Zde je základní příklad, který ukazuje, jak IIF() funguje.
SELECT IIF( 1 < 2, 'True', 'False' ); Výsledek:
True
V tomto případě je výraz k vyhodnocení 1 < 2 . Je pravda, že 1 je menší než 2, takže byl vrácen druhý argument.
Toto je ekvivalent provedení následujícího.
SELECT
CASE WHEN 1 < 2 THEN 'True'
ELSE 'False'
END; Výsledek:
True
V těchto příkladech jsem použil slova „True“ a „False“, ale mohl jsem použít cokoli.
Místo toho jsem mohl například udělat toto:
SELECT IIF( 1 < 2, 'Fail', 'Pass' ); Výsledek:
Fail
Nebo to může být něco úplně odstraněného z odpovědi binárního typu „pravda“ nebo „nepravda“.
Například:
SELECT IIF( 1 < 2, 'Deadlift', 'Bench Press' ); Výsledek:
Deadlift
Testování proměnné
V praxi byste normálně testovali proměnné, sloupce atd. spíše než konstanty jako v předchozích příkladech.
Zde je příklad, který testuje proměnnou.
DECLARE @bankBalance int = 123;
SELECT IIF(@bankBalance > 100, 'Rich!', 'Poor'); Výsledek:
Rich!
Příklad databáze
Zde je příklad, který používá sloupce z databáze.
SELECT TOP(10)
Name,
Population,
IIF(
Population > 400000,
'Big City',
'Small City'
) AS 'Big/Small'
FROM city; Výsledek:
+----------------+--------------+-------------+ | Name | Population | Big/Small | |----------------+--------------+-------------| | Kabul | 1780000 | Big City | | Qandahar | 237500 | Small City | | Herat | 186800 | Small City | | Mazar-e-Sharif | 127800 | Small City | | Amsterdam | 731200 | Big City | | Rotterdam | 593321 | Big City | | Haag | 440900 | Big City | | Utrecht | 234323 | Small City | | Eindhoven | 201843 | Small City | | Tilburg | 193238 | Small City | +----------------+--------------+-------------+
Vnořené funkce IIF()
Zde je příklad vnoření IIF() funkce. „Vnořením“ myslím, že předávám další IIF() fungovat jako argument pro vnější IIF() funkce.
DECLARE @bankBalance int = 123;
SELECT IIF(
@bankBalance > 100,
IIF(@bankBalance > 150, 'Rich!', 'Wealthy'),
'Poor'
); Výsledek:
Wealthy
Můžete vnořit IIF() funguje až do úrovně 10.