Funkcja NULL w SQL
- Poprzednia strona Null w SQL
- Następna strona Typy danych 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
- Poprzednia strona Null w SQL
- Następna strona Typy danych w SQL