In SQLite, iif()
è una funzione condizionale che restituisce il secondo o il terzo argomento in base alla valutazione del primo argomento.
È logicamente equivalente a CASE WHEN X THEN Y ELSE Z END
.
iif()
è l'abbreviazione di IF immediato .
Il iif()
la funzione è stata introdotta in SQLite 3.32.0, rilasciata il 22 maggio 2020.
Sintassi
La sintassi è questa:
iif(X,Y,Z)
Dove:
- X è l'espressione da valutare.
- S definisce cosa viene restituito se la valutazione di X restituisce vero.
- Z definisce cosa viene restituito se la valutazione di X restituisce falso.
Un altro modo per pensarci è questo:
iif(expr, truepart, falsepart)
Esempio
Ecco un esempio di base per dimostrare come iif()
funziona.
SELECT iif( 1 < 2, "True", "False" );
Risultato:
True
In questo caso, l'espressione da valutare era 1 < 2
. È vero che 1 è minore di 2, quindi è stato restituito il secondo argomento.
Questo equivale a fare quanto segue.
SELECT
CASE WHEN 1 < 2 THEN "True"
ELSE "False"
END;
Risultato:
True
In questi esempi ho usato le parole “Vero” e “Falso” ma avrei potuto usare qualsiasi cosa.
Ad esempio, avrei potuto farlo invece:
SELECT iif( 1 < 2, "Fail", "Pass" );
Risultato:
Fail
Oppure potrebbe essere qualcosa di completamente rimosso da una risposta di tipo binario "vera" o "falsa".
Ad esempio:
SELECT iif( 1 < 2, "Sticky Rice", "Banana Smoothie" );
Risultato:
Sticky Rice
Esempio di database
Ecco un esempio che utilizza le colonne di un database.
SELECT
ProductName,
Qty,
iif( Qty < 10, "Order more", "Sufficient stock" ) AS Notes
FROM Products;
Risultato:
ProductName Qty Notes ----------- ---------- ---------------- Hammer 10 Sufficient stock Saw 5 Order more Wrench 7 Order more Chisel 9 Order more Bandage 70 Sufficient stock