Megosztás a következőn keresztül:


Logikai függvények - IIF (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Két érték egyikét adja vissza, attól függően, hogy a Boole-kifejezés az SQL Serverben igaz vagy hamis értéket kap-e.

Transact-SQL szintaxis konvenciók

Szemantika

IIF( boolean_expression, true_value, false_value )

Arguments

boolean_expression

Egy érvényes Boole-kifejezés.

Ha ez az érv nem boole-kifejezés, akkor szintaxishiba merül fel.

true_value

Érték, amit vissza kell hozni, ha boolean_expression igaznak értékeli.

false_value

Érték, amit vissza kell adni, ha boolean_expression hamisnak értékelik.

Visszatérési típusok

A true_value és false_value típusok közül a legmagasabb prioritású adattípust adja vissza. További információ: Adattípus elsőbbsége (Transact-SQL).

Megjegyzések

Az IIF egy rövidítési módja a CASE kifejezés megírásának. Értékeli az első érvként átadott Boole-kifejezést, majd az értékelés eredménye alapján a másik két érvet adja vissza. Vagyis a true_value akkor jelenik meg, ha a Boole-kifejezés igaz, és a false_value akkor jelenik meg, ha a Boole-kifejezés hamis vagy ismeretlen. true_value és false_value bármilyen típus lehet. Ugyanazok a szabályok, amelyek a CASE kifejezésre vonatkoznak a Boolean kifejezésekre, null kezelésre és visszaküldési típusokra, az IIF-re is érvényesek. További információért lásd CASE (Transact-SQL).

Az a tény, hogy az IIF CASE-re fordítódik, hatással van a funkció viselkedésének más aspektusaira is. Mivel a CASE kifejezések csak 10-es szintig lehet beágyazni, az IIF utasításokat is csak a maximális 10-es szintig lehet beágyazni. Az IIF más szerverekhez is távolról van kapcsolva, mint szemantikailag ekvivalens CASE kifejezés, minden viselkedéssel, mint egy távoli CASE kifejezés.

Az IIF nem támogatott dedikált SQL poolokban az Azure Synapse Analytics-ben.

Példák

A. Egyszerű IIF példa

DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );

Itt van az eredmények összessége.

Result  
--------  
TRUE  

B. IIF NULL állandókkal

SELECT [Result] = IIF( 45 > 30, NULL, NULL );

Ennek az állításnak az eredménye egy hiba.

C. IIF NULL paraméterekkel

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT [Result] = IIF( 45 > 30, @P, @S );

Itt van az eredmények összessége.

Result  
--------  
NULL  

Következő lépések