Ce face IF()
IF() returnează al doilea argument dacă condiția este adevărată și al treilea în rest (inclusiv când condiția este NULL). Pentru mai multe ramuri folosește CASE.
Nu confunda funcția IF() cu instrucțiunea IF ... THEN ... END IF din procedurile stocate.
Parametri
| Parametru | Descriere |
|---|---|
conditie |
Condiția verificată. |
valoare_daca_da |
Rezultatul pentru adevărat. |
valoare_daca_nu |
Rezultatul pentru fals sau NULL. |
Ce returnează
Una dintre cele două valori.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE produse (
id INT PRIMARY KEY,
nume VARCHAR(30),
pret DECIMAL(10,2),
stoc INT,
reducere INT
);
INSERT INTO produse VALUES
(1, 'Laptop', 3499.90, 4, NULL),
(2, 'Mouse', 79.50, 25, 10),
(3, 'Birou', 899.00, 0, 15),
(4, 'Scaun', 649.99, 7, NULL),
(5, 'Monitor', 1199.00, 3, 5);
Exemplul 1: Stoc disponibil
SELECT nume, IF(stoc > 0, 'în stoc', 'epuizat') AS disponibilitate
FROM produse
ORDER BY id;
Rezultat
+---------+-----------------+
| nume | disponibilitate |
+---------+-----------------+
| Laptop | în stoc |
| Mouse | în stoc |
| Birou | epuizat |
| Scaun | în stoc |
| Monitor | în stoc |
+---------+-----------------+
Exemplul 2: Numărare condiționată
SELECT SUM(IF(stoc > 0, 1, 0)) AS in_stoc, SUM(IF(stoc = 0, 1, 0)) AS epuizate FROM produse;
Rezultat
+---------+----------+
| in_stoc | epuizate |
+---------+----------+
| 4 | 1 |
+---------+----------+
Greșeli frecvente
- Imbrici multe
IF()-uri. Devin greu de citit; de la trei ramuri, foloseșteCASE.