MySQL Java JavaScript PHP Python HTML-CSS C-sharp

FUNCȚII CASE, IF, IFNULL, COALESCE

Funcția CASE

Funcția CASE verifică veridicitatea unui set de condiții și, în funcție de rezultatul verificării, poate returna un rezultat specific. Această funcție are următoarea formă:

CASE
   WHEN conditie_1 THEN rezultat_1
   WHEN conditie_2 THEN rezultat_2
   .................................
    WHEN conditie_N THEN rezultat_N
   [ELSE rezultat_alternativ]
END

Haideți să luăm ca exemplu următoarea tabelă Products:

CREATE TABLE Products
(
   Id INT AUTO_INCREMENT PRIMARY KEY,
   ProductName VARCHAR(30) NOT NULL,
   Manufacturer VARCHAR(20) NOT NULL,
   ProductCount INT DEFAULT 0,
   Price DECIMAL NOT NULL
);

Vom face o interogare la această tabelă și vom utiliza funcția CASE:

SELECT ProductName, ProductCount,
CASE
   WHEN ProductCount = 1 
       THEN 'Stoc epuizat'
   WHEN ProductCount = 2 
       THEN 'Stoc redus'
   WHEN ProductCount = 3 
       THEN 'În stoc'
   ELSE 'Stoc bogat'
END AS Category
FROM Products;

Funcția IF

Funcția IF, în funcție de rezultatul unei expresii condiționale, returnează una dintre cele două valori. Forma generală a funcției arată astfel:

IF( condiție, valoare_1, valoare_2 )

Dacă condiția transmisă ca prim parametru este adevărată, atunci se returnează prima valoare, altfel se returnează a doua valoare. De exemplu:

SELECT ProductName, Manufacturer,
   IF(ProductCount > 3, 'Multe produse', 'Puține produse')
FROM Products;

Funcția IFNULL

Funcția IFNULL verifică valoarea unei anumite expresii. Dacă aceasta este NULL, atunci funcția returnează valoarea furnizată ca al doilea parametru.

IFNULL(expresie, valoare)

Spre exemplu, să luăm următoarea tabelă:

CREATE TABLE Clients
(
   Id INT AUTO_INCREMENT PRIMARY KEY,
   FirstName VARCHAR(20) NOT NULL,
   LastName VARCHAR(20) NOT NULL,
   Phone VARCHAR(20) NULL,
   Email VARCHAR(20) NULL
);
 
INSERT INTO Clients (FirstName, LastName, Phone, Email)
VALUES ('Tom', 'Smith', '+36436734', NULL),
('Bob', 'Simpson', NULL, NULL);

Și aplicăm funcția IFNULL la obținerea datelor:

SELECT FirstName, LastName,
       IFNULL(Phone, 'nu este definit') AS Phone,
       IFNULL(Email, 'necunoscut') AS Email
FROM Clients;

Funcția COALESCE

Funcția COALESCE primește o listă de valori și returnează prima dintre ele care nu este NULL:

COALESCE(Expresia_1, Expresia_2, Expresia_N)

De exemplu, să selectăm din tabela "Clients" utilizatorii și să determinăm în detaliile de contact ale acestora fie un număr de telefon, fie o adresă de email, dacă acestea nu sunt nule (NULL):

SELECT FirstName, LastName,
       COALESCE(Phone, Email, nedefinit') AS Contacts
FROM Clients;

Deci, în acest caz, se returnează numărul de telefon, dacă acesta este definit. Dacă nu este definit, se returnează adresa de e-mail. Dacă și adresa de e-mail nu este definită, se returnează șirul "nedefinit".

← Lecția anterioară