MS SQL 中的IsNull()函數:
IsNull ( check_expression , replacement_expression )
check_expression: 可以是任何類型,将要檢查的表達式 不為空,傳回它
replacement_expression: 類型必須和check_expression相同,check_expression為null,傳回它
這個函數的作用就是:判斷check_expression是否為空,為空就傳回replacement_expression,不為空則傳回check_expression
eg:
SELECT IsNull(null,1) 傳回1
SELECT IsNull(null,’男') 傳回男
SELECT IsNull(‘’,'男') 注意傳回的不是男哦
MS Sql中的 IsNull( )函數相當于Oracle中的 NVL( )函數:
NVL(EXP1,EXP2),函數傳回exp1和exp2 中第一個不為null的值。
如果exp1為空就傳回exp2,否則傳回exp1。
相當于Mysql中的IfNull()函數:
應用場景:比如一張表:Products ,該表取自 http://www.w3schools.com/SQL/sql_isnull.asp
P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
1 | Jarlsberg | 10.45 | 16 | 15 |
2 | Mascarpone | 32.56 | 23 | |
3 | Gorgonzola | 15.67 | 9 | 20 |
假設UnitsOnOrder這一列是可以為空的,可能含有空值,那麼執行
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder) FROM Products 有可能會出錯
因為UnitsOnOrder這一列為空的時候,運算的結果就是空
mssql的isnull()函數可以指定處理空值的方式:
改為下面得就可以了SELECT ProductName,UnitPrice*(UnitsInStock+isnull(UnitsOnOrder,0)) FROM Products
isnull(unitsOnOrder,0) unitsOnOrder為空的時候傳回0
COALESCE() function
COALESCE ( expression [ ,...n ] )
相當于:
COALESCE(expression1,...n) 的功能與以下 CASE 表達式相同:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
WHEN (expression2 IS NOT NULL) THEN expression2
...
ELSE expressionN
END