Ce face COALESCE / IFNULL
COALESCE verifică valorile în ordine și o returnează pe prima care nu este NULL. Este util pentru a afișa un text implicit („necunoscut”, 0) în locul golurilor.
IFNULL(a, b) este varianta MySQL cu exact două valori. COALESCE face parte din standardul SQL și merge și în alte baze de date.
Parametri
| Parametru | Descriere |
|---|---|
valoare1, valoare2, ... |
Valorile verificate, în ordine. |
Ce returnează
Prima valoare care nu este NULL sau NULL dacă toate sunt NULL.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE clienti (
id INT PRIMARY KEY,
nume VARCHAR(50) NOT NULL,
oras VARCHAR(30),
email VARCHAR(100)
);
INSERT INTO clienti VALUES
(1, 'Ana Pop', 'Cluj', 'ana@exemplu.ro'),
(2, 'Bogdan Ionescu', 'Sibiu', NULL),
(3, 'Cristina Marin', 'Cluj', 'cristina@exemplu.ro'),
(4, 'Dan Stoica', 'Arad', NULL);
Exemplul 1: Text implicit pentru valorile lipsă
SELECT nume, COALESCE(email, 'fără e-mail') AS contact FROM clienti;
Rezultat
+----------------+---------------------+
| nume | contact |
+----------------+---------------------+
| Ana Pop | ana@exemplu.ro |
| Bogdan Ionescu | fără e-mail |
| Cristina Marin | cristina@exemplu.ro |
| Dan Stoica | fără e-mail |
+----------------+---------------------+
Exemplul 2: IFNULL și prima valoare disponibilă
SELECT IFNULL(NULL, 'implicit') AS cu_ifnull,
COALESCE(NULL, NULL, 'a treia', 'a patra') AS cu_coalesce;
Rezultat
+-----------+-------------+
| cu_ifnull | cu_coalesce |
+-----------+-------------+
| implicit | a treia |
+-----------+-------------+
Greșeli frecvente
- Folosești
COALESCEpentru texte goale (''). Textul gol nu esteNULL, deci nu este înlocuit. Pentru ambele cazuri:COALESCE(NULLIF(email, ''), 'fără e-mail').