Coalesce()、greatest()、least()

oracle比较一列的数据大小时,我们一般使用max()/min()函数,比较一行的最大值或者最小值时,使用函数Coalesce()/greatest()/least()。

测试数据准备

create table stu_score(
stu_id varchar2(4),
math integer default 0, --姓名
english integer default 0, --性别 1 男 2 女 0 未知
chinese integer default 0
); insert into stu_score(stu_id, math, english, chinese) values('0001', '11', '22', '33');
insert into stu_score(stu_id, math, english, chinese) values('0002', '44', '55', '66');
insert into stu_score(stu_id, math, english, chinese) values('0003', '77', '88', '99');
insert into stu_score(stu_id, math, english, chinese) values('0004', '100', '', '');
insert into stu_score(stu_id, math, english, chinese) values('0005', '', '100', '');
insert into stu_score(stu_id, math, english, chinese) values('0006', '', '', '100');

Coalesce()

Coalesce (value1, value2, value3, …)

返回改表达式列表的第一个非空的值,value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

--coalesce测试①:返回2

select coalesce(2, 1, 3) Coalesce_test from dual;

--coalesce测试②:返回math

select coalesce('math', 'english', 'chinese') Coalesce_test from dual;

--coalesce测试③:数据类型不一致,报错

select coalesce('math', 'english', 'chinese',1) Coalesce_test from dual;

--coalesce测试④:返回结果如下图

select stu_id, coalesce(math, english, chinese) Coalesce_test from stu_score;

greatest()

greatest (value1, value2, value3, …)

返回value列表最大的值。value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。当value值列表中有一个为NULL,则返回NULL值。

--greatest测试①:返回3

select greatest(2, 1, 3) Coalesce_test from dual;

--greatest测试②:返回math

select greatest('math', 'english', 'chinese') Coalesce_test from dual;

--greatest测试③:自动处理数据类型,返回math

select greatest('math', 'english', 'chinese',1) Coalesce_test from dual;

--greatest测试④:返回结果如下图,如果value值列表中有一个为null,则返回null值

select stu_id, greatest(math, english, chinese) Coalesce_test from stu_score;

least()

least (value1, value2, value3, …)

返回value列表最小的值。value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。当value值列表中有一个为NULL,则返回NULL值。

--least测试①:返回1

select least(2, 1, 3) Coalesce_test from dual;

--least测试②:返回chinese

select least('math', 'english', 'chinese') Coalesce_test from dual;

--least测试③:自动处理数据类型,返回1

select least('math', 'english', 'chinese',1) Coalesce_test from dual;

--least测试④:返回结果如下图,如果value值列表中有一个为null,则返回null值

select stu_id, least(math, english, chinese) Coalesce_test from stu_score;

Oracle 函数 之 Coalesce()、greatest()、least()的更多相关文章

  1. oracle函数操作

    感于总有些网友提出一些非常基础的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊,格式是什么等等,同时也感受到自己对oracle函数认识的不足,于是集中月余时间专注于oracle函数,小有 ...

  2. 常用Oracle函数记录

    1. Oracle的replace函数与translate函数 replace函数是在字符串级别的代替,对应字符串一一替换 SQL> SELECT REPLACE('accd','cd','ef ...

  3. oracle函数,游标,视图使用总结0.000000000000000000001

    oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...

  4. 【函数】Oracle函数系列(2)--数学函数及日期函数

    [函数]Oracle函数系列(2)--数学函数及日期函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...

  5. oracle函数listagg的使用说明(分组后连接字段)

    关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用 ...

  6. 浅谈Oracle函数返回Table集合

    在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...

  7. oracle学习笔记(三)oracle函数

    --oracle 函数 --lower(char):将字符串转换为小写格式 --upper(char):将字符串转换为大写格式 --length(char):返回字符串的长度 --substr(cha ...

  8. oracle函数和存储过程有什么区别

    oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...

  9. Oracle函数sys_connect_by_path 详解

    Oracle函数sys_connect_by_path 详解 语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行.其语法一般为:       s ...

随机推荐

  1. swarm

    https://blog.51cto.com/lookingdream/2060292 一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # c ...

  2. 生产阶段Webpack打包【基础打包】

    webpack打包 1.在根目录创建一个 webpack.config.prod.js[它其实就是在开发阶段的基础上增加点东西] 增加了 output 去除了 devServer 2.在package ...

  3. 原生Ajax实现

    发现一件可怕的事情,前端学不完了,春招要开始了.唉,人生苦短.

  4. django--权限(1)初识

    一.权限表结构设计 1.认识权限 生活中处处有权限,比如,腾讯视频开会员才有观看某个最新电影的权限,你有房间钥匙就有了进入这个房间的权限,等等.同样,程序开发过程中也有权限,我们今天说的权限指的是we ...

  5. MD5WLBUtil

    import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import j ...

  6. (转)SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开?

    SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开? 原文:http://blog.csdn.net/hhcccchh/article/details/12995539 SELin ...

  7. java实现发送邮件工具

    java实现发送邮件的功能:首先需要导入mail.jar: 然后需要写发送方法: 1.邮箱发送封装工具类: package com.wxjiameng.utils; import java.util. ...

  8. Java中的continue语句——通过示例学习Java编程(12)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=23 continue语句主要是用在循环代码块中.当 ...

  9. The eighth day

    time n(名词):时间:次,时代,时刻: vt(及物动词):为...安排时间:测定...的时间:调准(机械的速度): vi(不及物动词):合拍,和谐,打拍子 files (原型是fly) vi(不 ...

  10. redis---安全设置

    redis的安全性是通过设置口令来实现的. 首先打开redis的配置文件,我的是在/etc/redis/redis.conf,个人的路径可能会有不同,可以自行查找. 打开redis.conf文件以后, ...