SQL NULL 函式
SQL IFNULL(), ISNULL(), COALESCE(), and NVL() 函式
檢視以下“Products”表
| P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
|---|---|---|---|---|
| 1 | Jarlsberg | 10.45 | 16 | 15 |
| 2 | Mascarpone | 32.56 | 23 | |
| 3 | Gorgonzola | 15.67 | 9 | 20 |
假設“UnitsOnOrder”列是可選的,並且可能包含 NULL 值。
檢視以下 SELECT 語句
SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products;
在上面的示例中,如果“UnitsOnOrder”中的任何值為 NULL,結果將為 NULL。
解決方案
MySQL
MySQL 的 IFNULL() 函式允許您在表示式為 NULL 時返回一個備用值
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;或者我們可以使用 COALESCE() 函式,如下所示
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;SQL Server
SQL Server 的 ISNULL() 函式允許您在表示式為 NULL 時返回一個備用值
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;或者我們可以使用 COALESCE() 函式,如下所示
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;MS Access
MS Access 的 IsNull() 函式在表示式為 null 值時返回 TRUE (-1),否則返回 FALSE (0)
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;Oracle
Oracle 的 NVL() 函式實現相同的結果
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;或者我們可以使用 COALESCE() 函式,如下所示
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;