Operatori aritmetici în MySQL

Operatori MySQL 5.0+

Adunare, scădere, înmulțire, împărțire, împărțire întreagă (DIV) și restul împărțirii (%, MOD).

Sintaxă
a + b   a - b   a * b   a / b   -a
a DIV b   a % b   a MOD b   MOD(a, b)

Ce face Operatori aritmetici

Operatorii +, -, * și / funcționează ca la matematică. / dă mereu un rezultat cu zecimale (7/2 = 3.5000), iar DIV dă doar partea întreagă (7 DIV 2 = 3).

%, MOD și funcția MOD() dau restul împărțirii; semnul rezultatului este semnul primului număr. Împărțirea la zero dă NULL, cu un avertisment. Minusul unar (-x) schimbă semnul.

Parametri

Parametru Descriere
a, b Numerele (sau coloanele numerice) din calcul.

Ce returnează

Rezultatul calculului; NULL dacă un operand este 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: Toți operatorii

SELECT 7 + 2 AS adunare, 7 - 2 AS scadere, 7 * 2 AS inmultire,
       7 / 2 AS impartire, 7 DIV 2 AS div_intreg, 7 % 3 AS rest,
       MOD(-7, 3) AS rest_negativ, -(-5) AS minus_unar;

Rezultat

+---------+---------+-----------+-----------+------------+------+--------------+------------+
| adunare | scadere | inmultire | impartire | div_intreg | rest | rest_negativ | minus_unar |
+---------+---------+-----------+-----------+------------+------+--------------+------------+
|       9 |       5 |        14 |    3.5000 |          3 |    1 |           -1 |          5 |
+---------+---------+-----------+-----------+------------+------+--------------+------------+

Exemplul 2: Calcule pe coloane: valoarea stocului

SELECT nume, pret, stoc, pret * stoc AS valoare_stoc
FROM produse
ORDER BY valoare_stoc DESC;

Rezultat

+---------+---------+------+--------------+
| nume    | pret    | stoc | valoare_stoc |
+---------+---------+------+--------------+
| Laptop  | 3499.90 |    4 |     13999.60 |
| Scaun   |  649.99 |    7 |      4549.93 |
| Monitor | 1199.00 |    3 |      3597.00 |
| Mouse   |   79.50 |   25 |      1987.50 |
| Birou   |  899.00 |    0 |         0.00 |
+---------+---------+------+--------------+

Exemplul 3: Împărțirea la zero

SELECT 10 / 0 AS rezultat;

Rezultat

+----------+
| rezultat |
+----------+
|     NULL |
+----------+
Warning (Code 1365): Division by 0

Greșeli frecvente

  • Folosești / când ai nevoie de un număr întreg (pagini, loturi). Folosește DIV sau CEIL(a / b).
  • Aduni o coloană care conține NULL: pret + reducere devine NULL. Folosește COALESCE(reducere, 0).

Comenzi înrudite

  • ROUND(): Rotunjește un număr la un număr de zecimale (sau la zeci, sute, cu valori negative).
  • CEIL(): Rotunjește în sus, la cel mai mic număr întreg mai mare sau egal.
  • COALESCE / IFNULL: Înlocuiește NULL cu o valoare implicită: returnează prima valoare care nu este NULL.