Funkcja NULL w SQL

Funkcje SQL ISNULL(), NVL(), IFNULL() i COALESCE()

Zobacz poniższą tabelę "Products":

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 komputer 699 25 15
2 drukarka 365 36  
3 telefon 280 159 57

Jeśli "UnitsOnOrder" jest opcjonalne i może zawierać wartości NULL.

Używamy następującego zapytania SELECT:

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

W powyższych przykładach, jeśli wartość "UnitsOnOrder" jest NULL, wynik jest NULL.

Funkcja ISNULL() firmy Microsoft jest używana do określenia, jak obsługiwane są wartości NULL.

Funkcje NVL(), IFNULL() i COALESCE() mogą osiągnąć ten sam efekt.

Tutaj, chcemy, aby wartość NULL wynosiła 0.

Poniżej, jeśli "UnitsOnOrder" jest NULL, to nie jest korzystne dla obliczeń, więc jeśli wartość jest NULL, to ISNULL() zwraca 0.

SQL Server / MS Access

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

Oracle

Oracle nie ma funkcji ISNULL(). Możemy jednak osiągnąć ten sam efekt, używając funkcji NVL():

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

MySQL

MySQL ma podobną funkcję ISNULL(). Jednak sposób jej działania różni się od funkcji ISNULL() firmy Microsoft.

W MySQL możemy użyć funkcji IFNULL(), tak jak tutaj:

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

Lub możemy użyć funkcji COALESCE(), tak jak tutaj:

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