SQL NULL 函數
SQL ISNULL()、NVL()、IFNULL() 和COALESCE() 函數
請看下面的"Products" 表:
P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
---|---|---|---|---|
# 1 | Jarlsberg | 10.45 | 16 | 15 |
#Mascarpone | 32.56 | 23 | ||
Gorgonzola | ##15.67 | 9 | 20 |
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
在上面的實例中,如果有"UnitsOnOrder" 值是NULL,那麼結果就是NULL。 微軟的 ISNULL() 函數用來規定如何處理 NULL 值。 NVL()、IFNULL() 和 COALESCE() 函數也可以達到相同的結果。 在這裡,我們希望 NULL 值為 0。 下面,如果"UnitsOnOrder" 是NULL,則不會影響計算,因為如果值是NULL 則ISNULL() 傳回0:FROM Products
SQL Server / MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
#Oracle
#Oracle 沒有ISNULL() 函數。不過,我們可以使用NVL() 函數來達到相同的結果:SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
#MySQL
MySQL 也有類似ISNULL() 的函式。不過它的運作方式與微軟的 ISNULL() 函數有點不同。 在MySQL 中,我們可以使用IFNULL() 函數,如下所示:SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
或我們可以使用COALESCE() 函數,如下所示:FROM Products
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products