Najnowsze tutoriale tworzenie stron internetowych
 

SQL Funkcje NULL


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

Spójrz na poniższy "Products" tabeli:

p_id Nazwa produktu CenaJednostkowa UnitsInStock UnitsonOrder
1 Jarlsberg 10,45 16 15
2 Mascarpone 32,56 23
3 Gorgonzola 15,67 9 20

Załóżmy, że "UnitsOnOrder" kolumna jest opcjonalny i może zawierać wartości NULL.

Mamy następujące SELECT:

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

W powyższym przykładzie, jeśli któryś z "UnitsOnOrder" wartości są NULL, wynikiem jest NULL.

Microsoft ISNULL() Funkcja ta jest używana do określenia, jak chcemy traktować wartości NULL.

NVL() , IFNULL() i COALESCE() funkcje mogą być również stosowane w celu osiągnięcia tego samego efektu.

W tym przypadku chcemy wartości NULL jako zero.

Poniżej, w razie "UnitsOnOrder" jest NULL nie zaszkodzi obliczeń, ponieważ ISNULL() zwraca zero, jeśli wartość jest NULL:

MS Access

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

SQL Server

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

Oracle

Oracle nie ma ISNULL() funkcję. Jednak możemy użyć NVL() funkcji, aby osiągnąć ten sam rezultat:

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

MySQL

MySQL nie mają ISNULL() funkcję. Jednak to działa trochę inaczej od Microsoftu ISNULL() funkcji.

W MySQL możemy użyć IFNULL() funkcji, na przykład:

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

lub możemy użyć COALESCE() funkcji, na przykład:

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