SQL Server函数之空值处理


SQL Server函数之空值处理

coalesce( expression [ ,...n ] )返回其参数中第一个非空表达式。


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

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

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

注意:
当第一个表达式为字符串且不能转化为整数时,若在后面的表达式中有整数,这样的语句是会报错的。
例如:

Select COALESCE( ' a ' , null , ' 1 ' , 2 //这是错误的

这相当于

select 
CASE
WHEN (
' a '  IS NOT NULL) THEN  ' a '
WHEN (
2  IS NOT NULL) THEN  2
ELSE NULL
END //会出现错误,因为系统无法将a转换为相应的整数

但是

select 
CASE
WHEN (
' a '  IS NOT NULL) THEN  ' a '
WHEN (
2  IS NOT NULL) THEN  ' 2 '
ELSE NULL
END //这是正确的

所以我们在使用coalesce函数时,应该相当小心。
isnull( check_expression , replacement_value ) 使用指定的替换值替换 NULL。
replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型。
在表stu中

select isnull(ssex, ' p ' ) from stu //若ssex列中有NULL值,那么返回p

nullif( expression , expression ) 如果两个指定的表达式相等,则返回空值,否则 NULLIF 返回第一个 expression 的值。

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





小麦苗课程

小麦苗课堂开课啦,如下是现有的课程,欢迎咨询小麦苗:


课程名称

课时

上课时间

价格

OCP(从入门到专家)

每年1期,35课时左右/期

20:00-22:00

1588(可优惠)

OCM认证

每年N期,9课时/期

20:00-22:00

22888

高可用课程(rac+dg+ogg)

每年1期,20课时左右/期

20:00-22:00

1888(可优惠)

Oracle初级入门

每年1期,15课时左右/期

20:00-22:00

800

Oracle健康检查脚本

可微信或微店购买。

88

Oracle数据库技能直通车

包含如下3个课程:

①《11g OCP网络课程培训》(面向零基础) 价值1600元

②《11g OCM网络班课程培训》(Oracle技能合集)价值10000+元

③《RAC + DG + OGG 高可用网络班课程》 价值2000元

以上3个课程全部打包只要5888,只要5888所有课程带回家,终身指导!所有课程都是在线讲课,不是播放视频,课件全部赠送!

注意:以上OCP和OCM课程只包括培训课程,不包括考试费用。OCM提供培训+视频,但是不提供练习环境和资料。报名一次,OCP和高可用的课程可以免费终身循环听课。

5888

OCP+高可用(rac+dg+ogg)

报名OCP+高可用课程,可以优惠300元,优惠后的价格为3188.

3188(可优惠)

注意:

1、每次上课前30分钟答疑。

2、OCM实时答疑,提供和考试一样的练习模拟环境,只要按照老师讲的方式来练习,可以保证100%通过。

3、授课方式:YY语音网络直播讲课(非视频) + QQ互动答疑 + 视频复习

4、OCP课时可以根据大家学习情况进行增加或缩减。

5、以上所有课程均可循环听课。

6、12c OCM课程私聊。

7、Oracle初级入门课程,只教大家最实用+最常用的Oracle操作维护知识。

8、以上所有课程,可以加小麦苗微信(lhrbestxh)或QQ(646634621)详聊,优惠多多。
 


培训项目

连接地址

DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

OCP培训说明连接

https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接

https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

高可用(RAC+DG+OGG)培训说明连接

https://mp.weixin.qq.com/s/4vf042CnOdAD8zDyjUueiw

OCP最新题库解析历史连接(052)

http://mp.weixin.qq.com/s/bUgn4-uciSndji_pUbLZfA

微店地址

https://weidian.com/s/793741433?wfr=c&ifr=shopdetail





About Me

.............................................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群号:230161599(满)、618766405

● 微信群:可加我微信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友646634621,注明添加缘由

● 于 2018-06-01 06:00 ~ 2018-06-31 24:00 在魔都完成

● 最新修改时间:2018-06-01 06:00 ~ 2018-06-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班http://blog.itpub.net/26736162/viewspace-2148098/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典)、添加小麦苗微信,学习最实用的数据库技术。

小麦苗的微信公众号小麦苗的DBA宝典QQ群2小麦苗的微信二维码小麦苗的微店

   小麦苗的微信公众号      小麦苗的DBA宝典QQ群2       小麦苗的微信二维码          小麦苗的微店

.............................................................................................................................................

ico_mailme_02.png
欢迎与我联系





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2156949/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26736162/viewspace-2156949/

### SQL Server 空值处理函数 ISNULL 和 COALESCE 的使用方法 在 SQL Server 中,`ISNULL` 和 `COALESCE` 是两个常用的空值处理函数,用于替换 NULL 值为指定的替代值。 #### 1. ISNULL 函数 `ISNULL` 函数用于检查表达式是否为 NULL,并返回指定的替换值。其语法如下: ```sql ISNULL(check_expression, replacement_value) ``` - `check_expression`:需要检查是否为 NULL 的表达式。 - `replacement_value`:当 `check_expression` 为 NULL 时返回的替代值。此值必须可以隐式转换为 `check_expression` 的类型[^2]。 示例代码: ```sql SELECT ISNULL(ssex, 'p') AS Gender FROM stu; ``` 上述代码中,如果 `ssex` 列中的值为 NULL,则返回 `'p'`[^2]。 #### 2. COALESCE 函数 `COALESCE` 函数返回参数列表中第一个非 NULL 的表达式。它可以接受多个参数,语法如下: ```sql COALESCE(expression1, expression2, ..., expressionN) ``` - `expression1`, `expression2`, ..., `expressionN`:一系列需要检查是否为 NULL 的表达式。 示例代码: ```sql SELECT FName, FBirthday, FRegDay, COALESCE(FBirthday, FRegDay, '2008-08-08') AS ImportantDay FROM T_Person; ``` 上述代码中,如果 `FBirthday` 不为 NULL,则返回 `FBirthday`;如果 `FBirthday` 为 NULL 且 `FRegDay` 不为 NULL,则返回 `FRegDay`;如果两者均为 NULL,则返回 `'2008-08-08'`[^3]。 #### 区别与注意事项 - **数据类型**:`ISNULL` 的返回值总是与第一个参数的数据类型相同,而 `COALESCE` 的返回值是基于所有参数的数据类型推导出的最高优先级类型。 - **参数数量**:`ISNULL` 只能接受两个参数,而 `COALESCE` 可以接受任意数量的参数[^3]。 - **性能**:`ISNULL` 是 SQL Server 特有的函数,通常比 `COALESCE` 更快,但 `COALESCE` 更灵活且符合 SQL 标准。 ### 示例对比 假设表 `T_Person` 中的数据如下: | FName | FBirthday | FRegDay | |---------|-----------|-----------| | Alice | NULL | 2022-01-01| | Bob | 2020-05-15| NULL | | Charlie | NULL | NULL | 执行以下查询: ```sql SELECT FName, ISNULL(FBirthday, FRegDay) AS ISNULL_Result, COALESCE(FBirthday, FRegDay, '2008-08-08') AS COALESCE_Result FROM T_Person; ``` 结果为: | FName | ISNULL_Result | COALESCE_Result | |---------|---------------|------------------| | Alice | 2022-01-01 | 2022-01-01 | | Bob | 2020-05-15 | 2020-05-15 | | Charlie | NULL | 2008-08-08 | #### 注意事项 - 使用 `ISNULL` 时需确保 `replacement_value` 的数据类型与 `check_expression` 兼容[^2]。 - 使用 `COALESCE` 时,注意参数的数据类型推导规则[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值