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. mac安装scrapy

    Mac自带python2.7,所以直接安装scrapy.默认安装了Xcode总共分以下几步:1.安装 homebrew.wget2.安装pip3.安装scrapy 安装homebrew在termina ...

  2. Restful 2 --DRF解析器,序列化组件使用(GET/POST接口设计)

    一.DRF - 解析器 1.解析器的引出 我们知道,浏览器可以向django服务器发送json格式的数据,此时,django不会帮我们进行解析,只是将发送的原数据保存在request.body中,只有 ...

  3. Bazinga HDU - 5510 不可做的暴力

    http://acm.hdu.edu.cn/showproblem.php?pid=5510 想了很久队友叫我用ufs + kmp暴力过去了. fa[x] = y表示x是y的子串,所以只有fa[x] ...

  4. Unity (反向动力学)IK动画

  5. Oozie安装的说明

    不多说,直接干货! Oozie相当于Hadoop的一个客户端,因此集群中要有一台机器部署Oozie server端即可,由于可以有任意多个客户端连接Oozie,故每个客户端都必须部署Oozie cli ...

  6. 牛客网Java刷题知识点之基本数据类型参数传递和引用数据类型参数传递图解

    不多说,直接上干货! //基本数据类型参数传递 class Demo { public static void main(String[] args) { ; show(x); System.out. ...

  7. No lease on /目录: File does not exist. [Lease. Holder: DFSClient_NONMAPREDUCE_-2059237550_1, pendingcreates: 8]错误及解决方法

    感觉程序员的世界真是一个变幻无常且精彩绝伦的世界,每次跑程序都会发现不一样的问题.今天跑MapReduce程序来统计邮箱次数时遇到了一个问题,明明一样的代码,别人能跑,我却跑不了.我相信,基本做这行的 ...

  8. SpringBoot | 第二十五章:日志管理之自定义Appender

    前言 前面两章节我们介绍了一些日志框架的常见配置及使用实践.一般上,在开发过程中,像log4j2.logback日志框架都提供了很多Appender,基本上可以满足大部分的业务需求了.但在一些特殊需求 ...

  9. Mybatis的小计

    1连接池 一 我的错误想法 poolMaximumIdleConnections 最大活跃连接数 poolMaximumActiveConnections 最大空闲连接数 我一直以为 空闲是一直存在的 ...

  10. @b.windows.last.use

    @b.windows.last.use @b.windows.first.use be_true  一般用在step文件中