SQL NULL 函數
sql null 函數
用來判斷字段的值是否為 null,包括:isnull()、nvl()、ifnull() 和 coalesce() 函數。
請看下面的 "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。
微軟的 isnull() 函數用于規定如何處理 null 值。
nvl()、ifnull() 和 coalesce() 函數也可以達到相同的結果。
在這里,我們希望 null 值為 0。
下面,如果 "unitsonorder" 是 null,則不會影響計算,因為如果值是 null 則 isnull() 返回 0:
1. sql server / ms access
select productname,unitprice*(unitsinstock+isnull(unitsonorder,0)) from products
2. oracle
oracle 沒有 isnull() 函數。不過,我們可以使用 nvl() 函數達到相同的結果:
select productname,unitprice*(unitsinstock+nvl(unitsonorder,0)) from products
3. mysql
mysql 也擁有類似 isnull() 的函數。不過它的工作方式與微軟的 isnull() 函數有點不同。
在 mysql 中,我們可以使用 ifnull() 函數,如下所示:
select productname,unitprice*(unitsinstock+ifnull(unitsonorder,0)) from products
或者我們可以使用 coalesce() 函數,如下所示:
select productname,unitprice*(unitsinstock+coalesce(unitsonorder,0)) from products
相關文章
- SQL 語法
- SQL WHERE 子句
- SQL INSERT 語句
- SQL DELETE 語句
- SQL SELECT TOP, LIMIT, ROWNUM 子句
- SQL 通配符
- SQL BETWEEN 操作符
- SQL JOIN 關鍵字
- SQL RIGHT JOIN 關鍵字
- SQL UNION 操作符
- SQL CREATE TABLE 語句
- SQL NOT NULL 約束
- SQL UNIQUE 約束
- SQL FOREIGN KEY 約束
- SQL CHECK 約束
- SQL CREATE INDEX 語句
- SQL DROP 語句
- SQL AUTO INCREMENT 字段
- SQL GROUP BY 語句
- SQL HAVING 子句