SQL NULL 函數(shù)
sql null 函數(shù)
用來判斷字段的值是否為 null,包括:isnull()、nvl()、ifnull() 和 coalesce() 函數(shù)。
請看下面的 "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,那么結(jié)果是 null。
微軟的 isnull() 函數(shù)用于規(guī)定如何處理 null 值。
nvl()、ifnull() 和 coalesce() 函數(shù)也可以達(dá)到相同的結(jié)果。
在這里,我們希望 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() 函數(shù)。不過,我們可以使用 nvl() 函數(shù)達(dá)到相同的結(jié)果:
select productname,unitprice*(unitsinstock+nvl(unitsonorder,0)) from products
3. mysql
mysql 也擁有類似 isnull() 的函數(shù)。不過它的工作方式與微軟的 isnull() 函數(shù)有點不同。
在 mysql 中,我們可以使用 ifnull() 函數(shù),如下所示:
select productname,unitprice*(unitsinstock+ifnull(unitsonorder,0)) from products
或者我們可以使用 coalesce() 函數(shù),如下所示:
select productname,unitprice*(unitsinstock+coalesce(unitsonorder,0)) from products
相關(guān)文章
- SQL 語法
- SQL WHERE 子句
- SQL INSERT 語句
- SQL DELETE 語句
- SQL SELECT TOP, LIMIT, ROWNUM 子句
- SQL 通配符
- SQL BETWEEN 操作符
- SQL JOIN 關(guān)鍵字
- SQL RIGHT JOIN 關(guān)鍵字
- 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 子句