Operatori de comparație în MySQL

Operatori MySQL 5.0+

Compară două valori și returnează 1 (adevărat), 0 (fals) sau NULL.

Sintaxă
a = b   a <> b   a != b   a < b   a <= b   a > b   a >= b   a <=> b

Ce face Operatori de comparație

Operatorii de comparație se folosesc mai ales în WHERE. <> și != înseamnă „diferit”. Comparațiile de text urmează colația: implicit nu contează majusculele și diacriticele.

Orice comparație cu NULL dă NULL, chiar și NULL = NULL. Excepția este <=> („egal sigur la NULL”), care tratează NULL ca pe o valoare obișnuită.

Parametri

Parametru Descriere
a, b Valorile comparate.

Ce returnează

1, 0 sau NULL (<=> nu dă niciodată NULL).

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: Rezultatele comparațiilor

SELECT 3 > 2 AS mai_mare, 2 <> 3 AS diferit, 'ana' = 'ANA' AS text,
       NULL = NULL AS nul_egal, NULL <=> NULL AS nul_sigur;

Rezultat

+----------+---------+------+----------+-----------+
| mai_mare | diferit | text | nul_egal | nul_sigur |
+----------+---------+------+----------+-----------+
|        1 |       1 |    1 |     NULL |         1 |
+----------+---------+------+----------+-----------+

Exemplul 2: Produse diferite de o reducere anume, inclusiv cele fără reducere

SELECT nume, reducere
FROM produse
WHERE NOT (reducere <=> 10)
ORDER BY id;

Rezultat

+---------+----------+
| nume    | reducere |
+---------+----------+
| Laptop  |     NULL |
| Birou   |       15 |
| Scaun   |     NULL |
| Monitor |        5 |
+---------+----------+

Greșeli frecvente

  • Scrii WHERE reducere = NULL. Nu găsește nimic; folosește IS NULL.
  • Folosești WHERE reducere != 10 și pierzi rândurile cu NULL. Comparația cu NULL nu este nici adevărată, nici falsă.

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.
  • IS și IS NOT (TRUE, FALSE, UNKNOWN): Testează o valoare față de TRUE, FALSE sau UNKNOWN (NULL); nu returnează niciodată NULL.
  • BETWEEN: Verifică dacă o valoare este într-un interval, cu tot cu capete.