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