manbet手机客户端3.0MSSQL coalesce系统函数简要介绍

发布时间:2019-09-11  栏目:SQL  评论:0 Comments

一、coalesce函数简单介绍

  COALESCE函数会依次检查输入的参数,再次回到第2个不是NULL的参数,唯有当传入COALESCE函数的有着的参数都以NULL的时候,函数才会回去NULL。譬喻, COALESCE(piName,”),假使变量piName为NULL,那么函数会回来”,否则就能够回来piName本身的值。

  下边包车型地铁例证显示了什么样对参数进行反省何发轫化。

  Person表用来积累个人的核心消息,其定义如下:

  表1: Person

  manbet手机客户端3.0 1

  下边是用于向表Person插入数据的存款和储蓄进程的参数预管理局地代码:

  SET poGenStatus = 0; SET piName = RTRIM(COALESCE(piName, ”)); SET
piRank = COALESCE(piRank, 0); — make sure all required input parameters
are not null IF ( piNum IS NULL OR piName = ” OR piAge IS NULL ) THEN
SET poGenStatus = 34100; RETURN poGenStatus; END IF;

  表Person中num、name和age都以非空字段。对于name字段,四个空格大家也认为是空值,所以在展开决断前大家调用RTCRUISERIM和COALESCE对其实行拍卖,然后使用
piName =
”,对其进展非空推断;对于Rank字段,大家愿意假如客户输入的NULL,大家把它设置成”0″,对其大家也使用COALESCE进行伊始化;对于”Age”和”Num”
大家一直利用 IS NULL实行非空决断就能够了。

  要是输入参数未有通过非空判定,我们就对出口参数poGenStatus设置三个分明的值(例子中为
34100)告知调用者:输入参数错误。

  上面是对参数开首化准则的贰个计算,供大家参照他事他说加以考察:

  1.
输入参数为字符类型,且允许为空的,可以选拔COALESCE(inputParameter,”)把NULL调换到”;

  2.
输入类型为整型,且允许为空的,能够运用COALESCE(inputParameter,0),把空调换到0;

  3.
输入参数为字符类型,且是非空非空格的,能够应用COALESCE(inputParameter,”)把NULL调换来”,然后剖断函数再次回到值是不是为”;

  4. 输入类型为整型,且是非空的,无需动用COALESCE函数,间接动用IS
NULL进行非空推断

 

[摘自]http://blog.163.com/liuqiuliang\_yss.popo/blog/static/45816910200892835348808/


但大家利用coalesce函数,会使此 说明式变的天生丽质,简单明了
select coalesce(@a,@b,@c)
——————————————————————————–

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

select isnull(@a,isnull(@b,isnull(@c,null)))
/*当需推断的参数越来越多时,大家的函数表达式就能够变的不胜复杂*/

 

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

二、coalesce 应用比方

  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)

 

留下评论

网站地图xml地图