sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje IIF() na serveru SQL Server

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.


  1. Jak povolit CDC na sadě tabulek NEBO povolit na všech tabulkách v databázi na SQL Server - SQL Server výukový program

  2. Proč se učit Cassandru s Hadoopem?

  3. Najít záznamy, kde spojení neexistuje

  4. Jak nahrát obrázky do databáze MySQL pomocí kódu PHP