TOP

Funcții SQL NULL

Funcțiile SQL IFNULL(), ISNULL(), COALESCE() și NVL()


Să ne uităm la următorul tabel „Products” („Produse”):

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

Să presupunem că coloana „UnitsOnOrder” este opțională și poate conține valoarea NULL.

Luați în considerare următoarea instrucțiune SELECT:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products

În exemplul de mai sus, dacă oricare dintre valorile „UnitsOnOrder” este egală cu NULL, rezultatul va fi NULL.

Decizie

MySQL

Funcția MySQL IFNULL() vă permite să returnați o valoare alternativă dacă expresia este egală cu NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products

sau putem folosi funcția COALESCE(), de exemplu:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

SQL Server

Funcția SQL Server ISNULL() vă permite să returnați o valoare alternativă dacă expresia are valoarea NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products

sau putem folosi funcția COALESCE(), de exemplu:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

MS Access

Funcția MS Access IsNull() returnează TRUE (-1) dacă expresia este nulă, în caz contrar FALSE (0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products

Oracle

Funcția Oracle NVL() obține același rezultat:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products

sau putem folosi funcția COALESCE(), de exemplu:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products