IS NULL în MySQL

Condiții în WHERE Toate versiunile MySQL și MariaDB

Găsește rândurile în care o coloană nu are valoare (NULL) sau, cu IS NOT NULL, în care are.

Sintaxă
WHERE coloana IS NULL;
WHERE coloana IS NOT NULL;

Ce face IS NULL

NULL înseamnă „fără valoare” sau „necunoscut”. Nu este același lucru cu 0 sau cu un text gol.

Orice comparație cu NULL folosind = sau <> are rezultatul NULL, deci nu este niciodată adevărată. Singurul mod corect de a verifica este IS NULL sau IS NOT 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: Clienți fără adresă de e-mail

SELECT nume FROM clienti WHERE email IS NULL;

Rezultat

+----------------+
| nume           |
+----------------+
| Bogdan Ionescu |
| Dan Stoica     |
+----------------+

Exemplul 2: Clienți cu adresă de e-mail

SELECT nume, email FROM clienti WHERE email IS NOT NULL;

Rezultat

+----------------+---------------------+
| nume           | email               |
+----------------+---------------------+
| Ana Pop        | ana@exemplu.ro      |
| Cristina Marin | cristina@exemplu.ro |
+----------------+---------------------+

Exemplul 3: De ce nu merge = NULL

SELECT COUNT(*) FROM clienti WHERE email = NULL;

SELECT COUNT(*) FROM clienti WHERE email IS NULL;

Rezultat

+----------+
| COUNT(*) |
+----------+
|        0 |
+----------+
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+

Greșeli frecvente

  • Scrii WHERE email = NULL sau WHERE email != NULL. Ambele găsesc 0 rânduri.
  • Salvezi texte goale ('') în unele rânduri și NULL în altele. Interogările trebuie să verifice ambele cazuri. Alege o singură convenție.

Comenzi înrudite

  • COALESCE / IFNULL: Înlocuiește NULL cu o valoare implicită: returnează prima valoare care nu este NULL.
  • WHERE: Filtrează rândurile: păstrează doar rândurile care îndeplinesc o condiție.
  • LEFT JOIN: Leagă două tabele și păstrează toate rândurile din primul, chiar dacă nu au pereche în al doilea.