Oracle的NVL()函数和MySQL中的IfNull()函数

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_IdProductNameUnitPriceUnitsInStockUnitsOnOrder
1Jarlsberg10.451615
2Mascarpone32.5623 
3Gorgonzola15.67920

假设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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值