sql >> Database >  >> RDS >> SQLite

Hoe iif() werkt in SQLite

In SQLite, iif() is een voorwaardelijke functie die het tweede of derde argument retourneert op basis van de evaluatie van het eerste argument.

Het is logisch gelijk aan CASE WHEN X THEN Y ELSE Z END .

iif() is een afkorting voor Immediate IF .

De iif() functie is geïntroduceerd in SQLite 3.32.0, die werd uitgebracht op 22 mei 2020.

Syntaxis

De syntaxis gaat als volgt:

iif(X,Y,Z)

Waar:

  • X is de uitdrukking die moet worden geëvalueerd.
  • J definieert wat wordt geretourneerd als de evaluatie van X geeft true terug.
  • Z definieert wat wordt geretourneerd als de evaluatie van X geeft false terug.

Een andere manier om erover na te denken is als volgt:

iif(expr, truepart, falsepart)

Voorbeeld

Hier is een eenvoudig voorbeeld om te laten zien hoe iif() werkt.

SELECT iif( 1 < 2, "True", "False" );

Resultaat:

True

In dit geval was de te evalueren uitdrukking 1 < 2 . Het is waar dat 1 kleiner is dan 2, dus het tweede argument is geretourneerd.

Dit komt overeen met het volgende doen.

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

Resultaat:

True

In deze voorbeelden heb ik de woorden "True" en "False" gebruikt, maar ik had alles kunnen gebruiken.

Ik had bijvoorbeeld dit kunnen doen:

SELECT iif( 1 < 2, "Fail", "Pass" );

Resultaat:

Fail

Of het kan iets zijn dat volledig is verwijderd van een "waar" of "onjuist" binair antwoord.

Bijvoorbeeld:

SELECT iif( 1 < 2, "Sticky Rice", "Banana Smoothie" );

Resultaat:

Sticky Rice

Databasevoorbeeld

Hier is een voorbeeld dat kolommen uit een database gebruikt.

SELECT 
  ProductName,
  Qty,
  iif( Qty < 10, "Order more", "Sufficient stock" ) AS Notes
FROM Products;

Resultaat:

ProductName  Qty         Notes           
-----------  ----------  ----------------
Hammer       10          Sufficient stock
Saw          5           Order more      
Wrench       7           Order more      
Chisel       9           Order more      
Bandage      70          Sufficient stock

  1. Dynamische SQL (tabelnaam doorgeven als parameter)

  2. Hoe werkt indexeren?

  3. PostgreSQL 9.2 JDBC-stuurprogramma gebruikt de tijdzone van de client?

  4. SQL Server-tabel verplaatsen naar andere bestandsgroep