Server函数之空值处理,coalesce系统函数简介

来源:http://www.smjxgs.com 作者:王中王高手论坛 人气:185 发布时间:2019-08-27
摘要:转自:http://www.maomao365.com/?p=4390 利用 nullif函数 。 coalesce( expression [ ,...n ] )再次回到其参数中首先个非空表明式。 一、coalesce函数简要介绍 nullif函数 有四个参数,定义如下:   coalesc

转自:http://www.maomao365.com/?p=4390

利用nullif函数

coalesce( expression [ ,...n ] )再次回到其参数中首先个非空表明式。

一、coalesce函数简要介绍

nullif函数有四个参数,定义如下:

 

coalesce 系统函数,比ISNULL更加强硬,更利于的系统函数,
coalesce能够收到八个参数,重回最左边不为NULL的参数,当全部参数都为空时,则赶回NULL
coalesce是最优isnull写法实施方案
先前我们使用isnull对两列或多列数据开展为空再次来到时候,要求每每施用isnull函数
—————————————————————————-
例:
declare @a varchar(10),@b varchar(10),@c varchar(10)
当@a为null时,大家查阅@b是还是不是为NULL,不为null,则赶回@b ,不然查看@c 不为NULL,则赶回@c ,不然重返NULL

NULLIF( expression , expression )

Select coalesce(null,null,'1','2') //结果为 1

select isnull(@a,isnull(@b,isnull(@c,null)))
/*当需判别的参数越来越多时,大家的函数表明式就能够变的卓殊复杂*/

其职能正是:如若四个钦赐的表明式相等,就回来null值。

coalesce(expression1**,**...n) 与此 case函数等效:

但大家应用coalesce函数,会使此 表达式变的赏心悦目,简单明了
select coalesce(@a,@b,@c)
——————————————————————————–

看一演示:

 


select nullif(0,0)

CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
END

二、coalesce 应用比方

运转结果:null

 

 

笔者们了然,null与其余数举行任何运算,其结果都等于null,利用那点,大家能够将方面包车型地铁sql改写为:

注意:
当第叁个表达式为字符串且无法转化为整数时,若在后头的表明式中有整数,那样的语句是会报错的。
例如:

  declare @a varchar(10),@b varchar(10),@c varchar(10),@d int 

 select coalesce(@a,@b,@c)

 set @a ='g'
 select coalesce(@a,@b,@c)

 set @a =null 
 set @b ='g2'
 set @c ='g3'
 select coalesce(@a,@b,@c)

 set @a =null
 set @b =null
 set @c =null 
 set @d =100

 select coalesce(@a,@b,@c,@d)

declare @a int;

Select COALESCE('a',null,'1',2) //这是不对的

 

declare @b int;

这一定于

set @a=10

 

set @b=0

select 
CASE
WHEN ('a' IS NOT NULL) THEN 'a'
WHEN (2 IS NOT NULL) THEN 2
ELSE NULL
END //会出现谬误,因为系统不也许将a调换为相应的大背头

select @a/nullif(@b,0)

 

其运作结果本来为null了。

但是

再选取isnull函数,大家就能够兑现当@b=0的时候,结果回到1的须求了。最后的sql改写如下:

 

declare @a int;

select 
CASE
WHEN ('a' IS NOT NULL) THEN 'a'
WHEN (2 IS NOT NULL) THEN '2'
ELSE NULL
END //那是不利的

declare @b int;

 

set @a=10

故而大家在采纳coalesce函数时,应该比异常的小心。
isnull( check_expression , replacement_value ) 使用内定的替换值替换 NULL。
replacement_value 必得是能够隐式转变为 check_expresssion 类型的门类。
在表stu中
图片 1

set @b=0

select isnull(ssex,'p') from stu //若ssex列中有NULL值,那么再次来到p

select isnull(@a/nullif(@b,0),1)

nullif( expression , expression ) 要是八个钦点的表明式相等,则赶回空值,不然 NULLIF 再次来到首个 expression 的值。

OK,三种方法介绍达成,相对于艺术一,作者更推荐大家利用办法二,因为方法二的代码更简省。

select nullif(1,1) //结果为 NULL
select nullif(1,2) //结果为 1

(假若有对象对isnull函数不打听的话,这里可以解释一下。

isnull的定义如下:

isnull(参数1,参数2)

其职能正是,当参数1相当于null时,就赶回参数2的值。)

本文由4887王中王鉄算盘奖结果发布于王中王高手论坛,转载请注明出处:Server函数之空值处理,coalesce系统函数简介

关键词:

上一篇:没有了

下一篇:没有了

最火资讯