Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak działa IIF() w SQL Server

W SQL Server, IIF() funkcja (nie mylić z IF instrukcja) to funkcja warunkowa, która zwraca drugi lub trzeci argument na podstawie oceny pierwszego argumentu.

To skrócony sposób na napisanie CASE wyrażenie. Jest logicznie odpowiednikiem CASE WHEN X THEN Y ELSE Z END zakładając IIF(X, Y, Z) .

IIF() to skrót od Natychmiastowe JEŻELI .

Składnia

Składnia wygląda tak:

IIF ( boolean_expression, true_value, false_value )

Gdzie:

  • wyrażenie_logiczne jest wyrażeniem do oceny.
  • prawdziwa_wartość jest zwracane, jeśli wyrażenie_logiczne to prawda.
  • false_value jest zwracane, jeśli wyrażenie_logiczne jest fałszywe lub nieznane.

Tak jak w przypadku CASE wyrażenia, IIF() oświadczenia mogą być zagnieżdżane tylko do maksymalnego poziomu 10.

Przykład

Oto podstawowy przykład pokazujący, jak IIF() działa.

SELECT IIF( 1 < 2, 'True', 'False' );

Wynik:

True

W tym przypadku wyrażenie do oceny to 1 < 2 . Prawdą jest, że 1 jest mniejsze niż 2, więc został zwrócony drugi argument.

Jest to równoważne z wykonaniem następujących czynności.

SELECT 
  CASE WHEN 1 < 2 THEN 'True'
    ELSE 'False'
  END;

Wynik:

True

W tych przykładach użyłem słów „Prawda” i „Fałsz”, ale mogłem użyć wszystkiego.

Na przykład mógłbym zrobić to zamiast tego:

SELECT IIF( 1 < 2, 'Fail', 'Pass' );

Wynik:

Fail

Lub może to być coś całkowicie usuniętego z „prawdziwej” lub „fałszywej” odpowiedzi typu binarnego.

Na przykład:

SELECT IIF( 1 < 2, 'Deadlift', 'Bench Press' );

Wynik:

Deadlift

Testowanie zmiennej

W praktyce zwykle testujesz zmienne, kolumny itp., a nie stałe, jak w poprzednich przykładach.

Oto przykład, który testuje zmienną.

DECLARE @bankBalance int = 123;
SELECT IIF(@bankBalance > 100, 'Rich!', 'Poor');

Wynik:

Rich!

Przykład bazy danych

Oto przykład, który wykorzystuje kolumny z bazy danych.

SELECT TOP(10)
    Name,
    Population,
    IIF( 
        Population > 400000, 
        'Big City', 
        'Small City' 
        ) AS 'Big/Small'
FROM city;

Wynik:

+----------------+--------------+-------------+
| 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  |
+----------------+--------------+-------------+

Zagnieżdżone funkcje IIF()

Oto przykład zagnieżdżenia IIF() funkcjonować. Przez „zagnieżdżanie” rozumiem, że przekazuję kolejną IIF() funkcja jako argument do zewnętrznej IIF() funkcja.

DECLARE @bankBalance int = 123;
SELECT IIF(
    @bankBalance > 100, 
    IIF(@bankBalance > 150, 'Rich!', 'Wealthy'), 
    'Poor'
    );

Wynik:

Wealthy

Możesz zagnieździć IIF() działa do poziomu 10.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy pojedyncza instrukcja SQL Server jest niepodzielna i spójna?

  2. Jak działa funkcja RIGHT() w SQL Server (T-SQL)

  3. SQL Server:kolumny do wierszy

  4. Znajdź jednostki odniesienia w SQL Server:sys.dm_sql_referenced_entities

  5. Sposoby śledzenia usuniętej bazy danych w SQL Server