sql语句中判断空值的函数
COALESCE()函数
主流数据库系统都支持COALESCE()函数,这个函数主要用来进行空值处理,其参数格式如下:
COALESCE ( expression,value1,value2……,valuen)
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。
如果expression不为空值则返回expression;否则判断value1是否是空值,
如果value1不为空值则返回value1;否则判断value2是否是空值,
如果value2不为空值则返回value2;……以此类推,
如果所有的表达式都为空值,则返回NULL。
我们将使用COALESCE()函数完成下面的功能,返回人员的“重要日期”:
如果出生日期不为空则将出生日期做为“重要日期”,如果出生日期为空则判断注册日期是否为空,如果注册日期不为空则将注册日期做为“重要日期”,如果注册日期也为空则将“2008年8月8日”做为“重要日期”。实现此功能的SQL语句如下:
MYSQL、MSSQLServer、DB2:
- SELECT FName,FBirthDay,FRegDay,
- COALESCE(FBirthDay,FRegDay,'2008-08-08') AS ImportDay
- FROM T_Person
Oracle:
- SELECT FBirthDay,FRegDay,
- COALESCE(FBirthDay,FRegDay,TO_DATE('2008-08-08', 'YYYY-MM-DD HH24:MI:SS'))
- AS ImportDay
- FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
- FName FBirthDay FRegDay ImportDay
- Tom 1981-03-22 00:00:00 1998-05-01 00:00:00 1981-03-22 00:00:00
- Jim 1987-01-18 00:00:00 1999-08-21 00:00:00 1987-01-18 00:00:00
- Lily 1987-11-08 00:00:00 2001-09-18 00:00:00 1987-11-08 00:00:00
- Kelly 1982-07-12 00:00:00 2000-03-01 00:00:00 1982-07-12 00:00:00
- Sam 1983-02-16 00:00:00 1998-05-01 00:00:00 1983-02-16 00:00:00
- Kerry <NULL> 1999-03-01 00:00:00 1999-03-01 00:00:00
- Smith <NULL> <NULL> 2008-08-08
- BillGates 1972-07-18 00:00:00 1995-06-19 00:00:00 1972-07-18 00:00:00
这里边最关键的就是Kerry和Smith这两行,可以看到这里的计算逻辑是完全符合我们的
需求的。
COALESCE()函数可以用来完成几乎所有的空值处理,不过在很多数据库系统中都提供了它的简化版,这些简化版中只接受两个变量,其参数格式如下:
MYSQL:
IFNULL(expression,value)
MSSQLServer:
ISNULL(expression,value)
Oracle:
NVL(expression,value)
这几个函数的功能和COALESCE(expression,value)是等价的。
比如SQL语句用于返回人员的“重要日期”,如果出生日期不为空则将出生日期做为“重要日期”,如果出生日期为空则返回注册日期的值:
MYSQL:
SELECT FBirthDay,FRegDay,
IFNULL(FBirthDay,FRegDay) AS ImportDay
FROM T_Person
MSSQLServer:
SELECT FBirthDay,FRegDay,
ISNULL(FBirthDay,FRegDay) AS ImportDay
FROM T_Person
Oracle:
SELECT FBirthDay,FRegDay,
NVL(FBirthDay,FRegDay) AS ImportDay
FROM T_Person
sql语句中判断空值的函数的更多相关文章
- mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()
1.group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一 ...
- sql语句中避免使用mysql函数,提升mysql处理能力。
如下sql中不要用mysql内置函数now()等,这样第一可以提高sql执行效率,第二统一程序层处理sql中时间参数,避免因服务器时间差导致问题产生. 使用PDO预处理,第一可以提高sql效率,第二可 ...
- 关于SQL语句中SUM函数返回NULL的解决办法
SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如 ...
- 问题:PLS-00204: 函数或伪列 'EXISTS' 只能在 SQL 语句中使用;结果:PL/SQL中不能用exists函数?
怎么写了一个语句带出这样的结果. 语句: if exists (select * from sysdatabases where name='omni') then 结果: ERROR 位于第 4 行 ...
- sql 语句中使用条件判断case then else end
sql 语句中使用条件判断case then else end范例: SELECT les.[nLessonNo] FROM BS_Lesson AS les WHERE les.[sClassCod ...
- Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数
Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数: select trunc(1.23856789,2) from dual round(m,n) 可以四舍五入 trunc ...
- SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ...
- SQL语句中日期的计算方法大全
sql语句中的日期处理一.日期處理函數1.日期增減函數 dateadd(datepart,number,dtae) datepart:是規定應向日期的哪一部分返回新值的參數.下列是sql server ...
- SQL语句中的单引号处理以及模糊查询
为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理.有2种办法: 1.使用参数,比如SELECT * FROM yourTable WHERE name = @name; 在C#中使用Sql ...
随机推荐
- 神坑 Resources.Load 不能实时加载TXT文件
Resources.Load(fileName) as TextAsset; 这句话并不能实时加载文本文件,对文本文件进行修改之后,若是没有刷新的话,加载的还是之前的文件: 要实时读取文本文件还是要以 ...
- 判断文件是否存在的shell脚本代码!
实现代码一 #shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d "/Top" ]; then mkdir -p /Topfi #shell判断文件, ...
- Unity 带骨骼的人体模型换装
直入主题: 1.实验材料 两个模型,虽然缺胳膊少腿的,但是能用!!! 2.条件 两个模型在制作时是基于同一套骨骼,导出模型部位时连着该部位的骨骼一起导出,这样导入到Unity的模型就带有Skinned ...
- cron 定时任两种配置方式
第一种:xml文件方式 <bean id="commonTimer" class="com.course.wx.timer.CommonTimer"> ...
- CEF3 命令行 CefCommandLine 所有选项 与 开发中使用的测试网址
转自: https://blog.csdn.net/xiezhongyuan07/article/details/86640413 1.cef3 commandLine设置 在cef3开发过程中,在O ...
- PHP防采集方法代码
<?php /** * FileName:test.php * Summary: 防采集 */ $HTTP_REFERER = $_SERVER["HTTP_REFERER" ...
- < 备考CET6 - 替换词 >
替换词 名词 结果 Result consequence 人 People, person citizen, individual 发展 Development advancement,progres ...
- python可变数据类型和不可变数据类型
1.可变数据类型:在id不变的情况下,value可改变(列表和字典是可变类型,但是字典中的key值必须是不可变类型) 2.不可变数据类型:value改变,id也跟着改变.(数字,字符串,布尔类型,都是 ...
- swagger2文档使用
①.导入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-sw ...
- jvm性能监控(3)-jdk自带工具 jps jstack jmap
一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id jstack 查看Java线程 jstack -l pid; 做thread dump ...