)重回其参数中首先个非空表明式,coalesce 系统

2019-09-22 05:46栏目:网络数据
TAG:

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

利用nullif函数

coalesce( expression [ ,...n ] )再次来到其参数中第3个非空表明式。

一、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的值。)

版权声明:本文由大奖888-www.88pt88.com-大奖888官网登录发布于网络数据,转载请注明出处:)重回其参数中首先个非空表明式,coalesce 系统