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. vue 中的.sync语法糖

    提到父子组件相互通信,可能大家的第一反应是$emit,最近在学着封装组件,以前都是用的别人封装好的UI组件,对vue中的.sync这个修饰符有很大的忽略,后来发现这个修饰符很nice,官方对她的描述是 ...

  2. jenkins相关下载链接

    Jenkins官网:https://jenkins.io/ 下载rpm安装包:   https://pkg.jenkins.io     http://mirrors.jenkins-ci.org/s ...

  3. BZOJ 1500 [NOI2005]维修数列 FHQ Treap

    终于A了这题...这题还是很好...但是我太菜...重构了三遍qwq FHQ Treap大法好!qwq...~~ Ins:直接拿输入造一棵树,把原来的树split成[1,pos],[pos+1,n], ...

  4. Base64Utils

    package com.yundaex.common.crypto.base64; import java.io.ByteArrayInputStream; import java.io.ByteAr ...

  5. excel单元格内容拆分

    这几天在整理数据,但是数据都在表格的一个单元格中,看起来很不方法,所以在网上找到excel单元格内如拆分的方法,并亲测有效 介绍2种拆分的方法 方法一: (1)在B1输入公式=right(text,[ ...

  6. jackson简单使用案例

    新建Maven项目导入依赖包:jakson <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&quo ...

  7. SpringBoot | 第二十三章:日志管理之整合篇

    前言 在本系列<第四章:日志管理>中,由于工作中日志这块都是走默认配置,也没有深入了解过,因为部署过程中直接使用了linux中的输出重定向功能,如java -jar xx.jar > ...

  8. NLog学习笔记一

    一.NLog是什么? NLog是一个基于.NET的免费的开源的日志记录类库.(官网:http://nlog-project.org/) NLog特点如下: 配置简单方便.可以将配置信息写的应用程序的配 ...

  9. 《C#高效编程》读书笔记07-理解GetHashCode()的陷阱

    GetHashCode()函数仅会在一个地方用到,即为基于散列(hash)的集合定义的散列键时,此类集合包括HashSet和Dictionary<K,V>容器等. 但object基类提供的 ...

  10. fn先生开篇博客

    开篇博客,也不清楚要写点啥nie,以前好像在CSDN上写过一点,但是由于本人工作号一直在变,忘了CSDN上的账号密码(尴尬...不确定这个以后会不会再次丢失呀),重新在开始吧. 记得以前,一直有朋友说 ...