sql >> Database teknologi >  >> RDS >> SQLite

Hvordan iif() virker i SQLite

I SQLite, iif() er en betinget funktion, der returnerer det andet eller tredje argument baseret på evalueringen af ​​det første argument.

Det svarer logisk til CASE WHEN X THEN Y ELSE Z END .

iif() er en forkortelse for Immediate IF .

iif() funktion blev introduceret i SQLite 3.32.0, som blev frigivet den 22. maj 2020.

Syntaks

Syntaksen ser sådan ud:

iif(X,Y,Z)

Hvor:

  • X er det udtryk, der skal evalueres.
  • Y definerer, hvad der returneres, hvis evalueringen af ​​X returnerer sandt.
  • Z definerer, hvad der returneres, hvis evalueringen af ​​X returnerer falsk.

En anden måde at tænke det på er sådan her:

iif(expr, truepart, falsepart)

Eksempel

Her er et grundlæggende eksempel for at demonstrere, hvordan iif() virker.

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

Resultat:

True

I dette tilfælde var udtrykket, der skulle evalueres, 1 < 2 . Det er rigtigt, at 1 er mindre end 2, så det andet argument blev returneret.

Dette svarer til at gøre følgende.

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

Resultat:

True

I disse eksempler brugte jeg ordene "True" og "False", men jeg kunne have brugt hvad som helst.

For eksempel kunne jeg have gjort dette i stedet:

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

Resultat:

Fail

Eller det kan være noget, der er fuldstændig fjernet fra et "sandt" eller "falskt" binært svar.

For eksempel:

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

Resultat:

Sticky Rice

Databaseeksempel

Her er et eksempel, der bruger kolonner fra en database.

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

Resultat:

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

  1. Kan ikke blot bruge PostgreSQL tabelnavn (relation eksisterer ikke)

  2. Skriver du valgfrie parametre inden for lagrede procedurer i MySQL?

  3. Forvirret over UPDLOCK, HOLDLOCK

  4. Sådan kontrolleres størrelsen af ​​en database i MySQL