IS și IS NOT (TRUE, FALSE, UNKNOWN) în MySQL

Testează o valoare față de TRUE, FALSE sau UNKNOWN (NULL); nu returnează niciodată NULL.

Sintaxă
valoare IS [NOT] {TRUE | FALSE | UNKNOWN}

Ce face IS și IS NOT (TRUE, FALSE, UNKNOWN)

IS TRUE este adevărat pentru orice valoare nenulă diferită de 0. IS FALSE este adevărat doar pentru 0. IS UNKNOWN este adevărat pentru NULL.

Spre deosebire de comparațiile obișnuite, IS și IS NOT dau mereu 1 sau 0, chiar și pentru NULL.

Parametri

Parametru Descriere
valoare Valoarea testată.

Ce returnează

1 sau 0.

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: Rezultate pentru 0, 2 și NULL

SELECT 0 IS TRUE AS zero_true, 2 IS TRUE AS doi_true,
       NULL IS UNKNOWN AS null_unknown, NULL IS NOT FALSE AS null_not_false;

Rezultat

+-----------+----------+--------------+----------------+
| zero_true | doi_true | null_unknown | null_not_false |
+-----------+----------+--------------+----------------+
|         0 |        1 |            1 |              1 |
+-----------+----------+--------------+----------------+

Exemplul 2: Produse care nu au sigur reducere activă

SELECT nume, reducere
FROM produse
WHERE (reducere > 0) IS NOT TRUE
ORDER BY id;

Rezultat

+--------+----------+
| nume   | reducere |
+--------+----------+
| Laptop |     NULL |
| Scaun  |     NULL |
+--------+----------+

Greșeli frecvente

  • Folosești IS TRUE pe texte. Textul este convertit în număr; 'da' IS TRUE dă 0.

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.
  • Operatori logici: AND, OR, NOT, XOR: Combină condiții: AND (ambele), OR (măcar una), NOT (inversul), XOR (exact una).
  • IF(): Alege între două valori după o condiție, ca un operator ternar.