COALESCE / IFNULL în MySQL

Funcții Toate versiunile MySQL și MariaDB

Înlocuiește NULL cu o valoare implicită: returnează prima valoare care nu este NULL.

Sintaxă
COALESCE(valoare1, valoare2, ...)
IFNULL(valoare, inlocuitor)

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 COALESCE pentru texte goale (''). Textul gol nu este NULL, deci nu este înlocuit. Pentru ambele cazuri: COALESCE(NULLIF(email, ''), 'fără e-mail').

Comenzi înrudite

  • IS NULL: Găsește rândurile în care o coloană nu are valoare (NULL) sau, cu IS NOT NULL, în care are.
  • CASE: Alege o valoare în funcție de condiții, ca un if / else în interiorul interogării.
  • SUM: Adună valorile dintr-o coloană numerică.