INTERVAL() în MySQL

Returnează în al câtelea interval se află un număr, față de o listă crescătoare de praguri.

Sintaxă
INTERVAL(n, prag1, prag2, ...)

Ce face INTERVAL()

INTERVAL(n, p1, p2, p3) returnează 0 dacă n < p1, 1 dacă n < p2, 2 dacă n < p3 și așa mai departe. Pragurile trebuie să fie în ordine crescătoare. Este o alternativă scurtă la un CASE pe intervale.

Parametri

Parametru Descriere
n Numărul verificat.
prag1, prag2, ... Pragurile, crescătoare.

Ce returnează

Un număr de la 0 la numărul de praguri.

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: Categorii de preț

SELECT nume, pret,
       ELT(INTERVAL(pret, 100, 1000) + 1, 'ieftin', 'mediu', 'scump') AS categorie
FROM produse
ORDER BY pret;

Rezultat

+---------+---------+-----------+
| nume    | pret    | categorie |
+---------+---------+-----------+
| Mouse   |   79.50 | ieftin    |
| Scaun   |  649.99 | mediu     |
| Birou   |  899.00 | mediu     |
| Monitor | 1199.00 | scump     |
| Laptop  | 3499.90 | scump     |
+---------+---------+-----------+

Greșeli frecvente

  • Confunzi funcția INTERVAL() cu expresia INTERVAL 1 DAY folosită la date. Sunt lucruri diferite.

Comenzi înrudite

  • CASE: Alege o valoare în funcție de condiții, ca un if / else în interiorul interogării.
  • ELT(): Returnează al N-lea argument dintr-o listă; inversul funcției FIELD().
  • BETWEEN: Verifică dacă o valoare este într-un interval, cu tot cu capete.