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

本文介绍了MSSQL中的IsNull()函数及其等效函数NVL()和IfNull()的功能,展示了如何使用IsNull()处理空值以避免计算错误,并对比了IsNull()与COALESCE()函数。

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值