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

  COALESCE函数会依次检查输入的参数,返回第一个不是NULL的参数,只有当传入COALESCE函数的所有的参数都是NULL的时候,函数才会返回NULL。例如, COALESCE(piName,”),如果变量piName为NULL,那么函数会返回”,否则就会返回piName本身的值。

  下面的例子展示了如何对参数进行检查何初始化。

  Person表用来存储个人的基本信息,其定义如下:

  表1: Person

  图片 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字段,多个空格我们也认为是空值,所以在进行判断前我们调用RTRIM和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进行非空判断

 

[摘自]

SQL函数 coalesce

摘要:
下文收集了sqlserver函数教程,为每一个函数都进行了相关举例说明,

coalesce(表达式)

一、coalesce函数简介

功能:

如下所示:

相当于

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

返回参数中第一个非null的值。

sqlserver聚合函数教程:
mssql sqlserver
avg聚合函数使用简介
mssql sqlserver
CHECKSUM_AGG聚合函数使用简介
mssql sqlserver
count聚合函数使用简介
mssql sqlserver
count_big聚合函数使用简介
mssql sqlserver
grouping聚合函数使用简介
mssql sqlserver
grouping_id聚合函数使用简介
mssql sqlserver
max及min聚合函数使用简介
mssql sqlserver
stdev及stdevp聚合函数使用简介
mssql sqlserver
sum聚合函数使用简介
mssql sqlserver
var及varp聚合函数使用简介
sqlserver分析函数教程:
mssql sqlserver
CUME_DIST分析函数使用简介
mssql sqlserver
CUME_DIST分析函数原理说明
mssql sqlserver FIRST_VALUE
LAST_VALUE分析函数使用简介
mssql sqlserver LAG
lead分析函数使用简介
mssql sqlserver
PERCENTILE_CONT分析函数使用简介
mssql sqlserver
PERCENTILE_DISC分析函数使用简介
mssql sqlserver
PERCENT_RANK分析函数使用简介
sqlserver系统全局变量教程:
mssql sqlserver
@@DBTS全局变量简介
mssql sqlserver
@@LANGID全局变量简介
mssql sqlserver
@@LOCK_TIMEOUT全局变量简介
mssql sqlserver
@@MAX_CONNECTIONS全局变量简介
mssql sqlserver
@@MAX_PRECISION全局变量简介
mssql sqlserver
@@NESTLEVEL全局变量简介
mssql sqlserver
@@REMSERVER全局变量简介
mssql sqlserver
@@SERVERNAME全局变量简介
mssql sqlserver
@@SERVICENAME全局变量简介
mssql sqlserver
@@SPID全局变量简介
mssql sqlserver
@@VERSION全局变量简介
sqlserver数值类型转换函数教程:
mssql sqlserver
cast数值转换函数用法简介
mssql sqlserver
cast及convert数值转换函数用法简介
mssql sqlserver
parse数值转换函数用法简介
mssql sqlserver
TRY_CAST数值转换函数用法简介
mssql sqlserver
TRY_CONVERT数值转换函数用法简介
mssql sqlserver
TRY_PARSE数值转换函数用法简介
sqlserver循环相关类函数教程:
mssql sqlserver
@@CURSOR_ROWS循环相关类函数用法简介
mssql sqlserver
@@FETCH_STATUS循环相关类函数用法简介
mssql sqlserver
CURSOR_STATUS循环相关类函数用法简介
mssql
sqlserver_sql流程控制语句while循环关键字用法简介
mssql sqlserver
模拟for循环的写法
mssql sqlserver
遍历循环的新方法
sqlserver数据类型相关函数教程:
mssql sqlserver
DATALENGTH数据类型相关函数用法简介
mssql sqlserver
IDENT_CURRENT数据类型相关函数用法简介
mssql sqlserver
IDENT_INCR数据类型相关函数用法简介
mssql sqlserver
IDENT_SEED数据类型相关函数用法简介
mssql sqlserver
IDENTITY数据类型相关函数用法简介
mssql sqlserver
SQL_VARIANT_PROPERTY数据类型相关函数用法简介
sqlserver
时间及日期相关函数教程:

mssql sqlserver
@@DATEFIRST时间及日期相关函数用法简介
mssql sqlserver
CURRENT_TIMESTAMP时间及日期相关函数用法简介
mssql sqlserver
DATEADD时间及日期相关函数用法简介
mssql sqlserver
DATEDIFF时间及日期相关函数用法简介
mssql sqlserver
DATEDIFF_BIG时间及日期相关函数用法简介
mssql sqlserver
DATEFROMPARTS时间及日期相关函数用法简介
mssql sqlserver
DATENAME时间及日期相关函数用法简介
mssql sqlserver
DATEPART时间及日期相关函数用法简介
mssql sqlserver
DATETIME2FROMPARTS时间及日期相关函数用法简介
mssql sqlserver
DATETIMEFROMPARTS时间及日期相关函数用法简介
mssql sqlserver
DATETIMEOFFSETFROMPARTS时间及日期相关函数用法简介
mssql sqlserver
DAY时间及日期相关函数用法简介
mssql sqlserver
EOMONTH时间及日期相关函数用法简介
mssql sqlserver
GETDATE时间及日期相关函数用法简介
mssql sqlserver
GETUTCDATE时间及日期相关函数用法简介
mssql sqlserver
ISDATE时间及日期相关函数用法简介
mssql sqlserver
MONTH时间及日期相关函数用法简介
mssql sqlserver
SMALLDATETIMEFROMPARTS时间及日期相关函数用法简介
mssql sqlserver
SWITCHOFFSET时间及日期相关函数用法简介
mssql sqlserver
SYSDATETIME时间及日期相关函数用法简介
mssql sqlserver
SYSDATETIMEOFFSET时间及日期相关函数用法简介
mssql sqlserver
SYSUTCDATETIME时间及日期相关函数用法简介
mssql sqlserver
TIMEFROMPARTS时间及日期相关函数用法简介
mssql sqlserver
TODATETIMEOFFSET时间及日期相关函数用法简介
mssql sqlserver
YEAR时间及日期相关函数用法简介
mssql sql server 常用日期转换方法分享 (convert
datetime)
sqlserver
JSON相关函数教程:

mssql sqlserver
ISJSON相关函数用法简介
sqlserver
数学函数教程:

mssql sqlserver
ABS数学函数用法简介
mssql sqlserver
ACOS数学函数用法简介
mssql sqlserver
ASIN数学函数用法简介
mssql sqlserver
ATAN数学函数用法简介
mssql sqlserver
ATN2数学函数用法简介
mssql sqlserver
CEILING数学函数用法简介
mssql sqlserver
COS数学函数用法简介
mssql sqlserver
COT数学函数用法简介
mssql sqlserver
DEGREES数学函数用法简介
mssql sqlserver
EXP数学函数用法简介
mssql sqlserver
FLOOR数学函数用法简介
mssql sqlserver
LOG数学函数用法简介
mssql sqlserver
LOG10数学函数用法简介
mssql sqlserver
PI数学函数用法简介
mssql sqlserver
POWER数学函数用法简介
mssql sqlserver
RADIANS数学函数用法简介
mssql sqlserver
RAND数学函数用法简介
mssql sqlserver
ROUND数学函数用法简介
mssql sqlserver
SIGN数学函数用法简介
mssql sqlserver
SIN数学函数用法简介
mssql sqlserver
SQRT数学函数用法简介
mssql sqlserver
SQUARE数学函数用法简介
mssql sqlserver
TAN数学函数用法简介
sqlserver
逻辑函数教程:

mssql sqlserver
CHOOSE逻辑函数用法简介
mssql sqlserver
IIF逻辑函数用法简介
sqlserver
元数据教程:

mssql sqlserver
@@PROCID元数据用法简介
mssql sqlserver
APP_NAME元数据用法简介
mssql sqlserver
ASSEMBLYPROPERTY元数据用法简介
mssql sqlserver COL_LENGTH COL_NAME
COLUMNPROPERTY元数据用法简介
mssql sqlserver
DATABASE_PRINCIPAL_ID元数据用法简介
mssql sqlserver
DATABASEPROPERTYEX元数据用法简介
mssql sqlserver DB_ID
DB_NAME元数据用法简介
mssql sqlserver
FILE_ID元数据用法简介
mssql sqlserver
FILE_IDEX元数据用法简介
mssql sqlserver
FILE_NAME元数据用法简介
mssql sqlserver
FILEGROUP_ID元数据用法简介
mssql sqlserver
FILEGROUP_NAME元数据用法简介
mssql sqlserver
FILEGROUPPROPERTY元数据用法简介
mssql sqlserver
FILEPROPERTY元数据用法简介
mssql sqlserver
FULLTEXTCATALOGPROPERTY元数据用法简介
mssql sqlserver
FULLTEXTSERVICEPROPERTY元数据用法简介
mssql sqlserver
INDEX_COL元数据用法简介
mssql sqlserver
INDEXKEY_PROPERTY元数据用法简介
mssql sqlserver
INDEXPROPERTY元数据用法简介
mssql sqlserver
OBJECT_DEFINITION元数据用法简介
mssql sqlserver
OBJECT_ID元数据用法简介
mssql sqlserver
OBJECT_NAME元数据用法简介
mssql sqlserver
OBJECT_SCHEMA_NAME元数据用法简介
mssql sqlserver
ORIGINAL_DB_NAME元数据用法简介
mssql sqlserver
PARSENAME元数据用法简介
mssql sqlserver
SCHEMA_ID元数据用法简介
mssql sqlserver
SCHEMA_NAME元数据用法简介
mssql sqlserver
SCOPE_IDENTITY元数据用法简介
mssql sqlserver
SERVERPROPERTY元数据用法简介
mssql sqlserver
STATS_DATE元数据用法简介
mssql sqlserver
TYPE_ID元数据用法简介
mssql sqlserver
TYPE_NAME元数据用法简介
mssql sqlserver
TYPEPROPERTY元数据用法简介
sqlserver
排名函数教程:

mssql sqlserver
分组排序函数row_number、rank、dense_rank用法简介及说明
row_number() rank() dense_rank()
排名函数的用途及区别
sqlserver
复制函数教程:

mssql sqlserver PUBLISHINGSERVERNAME
关键字功能说明
sqlserver
集合获取函数:

mssql sqlserver
OPENDATASOURCE集合获取函数简介
mssql sqlserver
OPENJSON集合获取函数简介
mssql sqlserver
OPENQUERY集合获取函数简介
mssql sqlserver
OPENROWSET集合获取函数简介
mssql sqlserver
OPENXML集合获取函数简介
sqlserver字符串函数教程:
mssql sqlserver
ASCII字符串函数简介
mssql sqlserver
CHAR字符串函数简介
mssql sqlserver
CHARINDEX字符串函数简介
mssql sqlserver
CONCAT字符串函数简介
mssql sqlserver
CONCAT_WS字符串函数简介
mssql sqlserver
DIFFERENCE字符串函数简介
mssql sqlserver
FORMAT字符串函数简介
mssql sqlserver
LEFT字符串函数简介
mssql sqlserver
LEN字符串函数简介
mssql sqlserver
LOWER字符串函数简介
mssql sqlserver
LTRIM字符串函数简介
mssql sqlserver
NCHAR字符串函数简介
mssql sqlserver
PATINDEX字符串函数简介
mssql sqlserver
QUOTENAME字符串函数简介
mssql sqlserver
REPLACE字符串函数简介
mssql sqlserver
REPLICATE字符串函数简介
mssql sqlserver
REVERSE字符串函数简介
mssql sqlserver
RIGHT字符串函数简介
mssql sqlserver
RTRIM字符串函数简介
mssql sqlserver
SOUNDEX字符串函数简介
mssql sqlserver
SPACE字符串函数简介
mssql sqlserver
STR字符串函数简介
mssql
sqlserver错误修复-“string_split无效的对象名称”
mssql sqlserver
STUFF字符串函数简介
mssql sqlserver
SUBSTRING字符串函数简介
mssql sqlserver
UNICODE字符串函数简介
mssql sqlserver
UPPER字符串函数简介
sqlserver系统函数教程:
mssql sqlserver
$PARTITION系统函数简介
mssql sqlserver
@@ERROR系统函数简介
mssql sqlserver
@@IDENTITY系统函数简介
mssql sqlserver
@@PACK_RECEIVED系统函数简介
mssql sqlserver
@@ROWCOUNT系统函数简介
mssql sqlserver
@@TRANCOUNT系统函数简介
mssql sqlserver
BINARY_CHECKSUM系统函数简介
mssql sqlserver
CONNECTIONPROPERTY系统函数简介
mssql sqlserver HOST_ID
host_name系统函数简介
mssql sqlserver
ISNULL系统函数简介
mssql sqlserver
ISNUMERIC系统函数简介
mssql sqlserver
NEWID系统函数简介
mssql sqlserver
ROWCOUNT_BIG系统函数简介
sqlserver
系统统计函数:

mssql sqlserver
@@CONNECTIONS系统统计函数简介
mssql sqlserver
@@CPU_BUSY系统统计函数简介
mssql sqlserver
@@IDLE系统统计函数简介
mssql sqlserver
@@IO_BUSY系统统计函数简介
mssql sqlserver
@@PACK_SENT系统统计函数简介
mssql sqlserver
@@PACKET_ERRORS系统统计函数简介
mssql sqlserver
@@TIMETICKS系统统计函数简介
mssql sqlserver
@@TOTAL_ERRORS系统统计函数简介
mssql sqlserver
@@TOTAL_READ系统统计函数简介
mssql sqlserver
@@TOTAL_WRITE系统统计函数简介

case when 表达式 is not null then 表达式

select isnull(@a,isnull(@b,isnull(@c,null)))
/*当需判断的参数越多时,我们的函数表达式就会变的异常复杂*/

语法:

       when 表达式1 is not null then 表达式1

但我们使用coalesce函数,会使此 表达式变的优美,通俗易懂
select coalesce(@a,@b,@c)
——————————————————————————–

coalesce(参数1,参数2,参数3,…);返回第一个非null的值。

       else null


 一般情况下会与Nullif()函数一起使用。

end

二、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地图