千家信息网

greatest函数与least函数怎么在oracle中使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家介绍greatest函数与least函数怎么在oracle中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。greatest (max(one),max(two)
千家信息网最后更新 2026年11月01日greatest函数与least函数怎么在oracle中使用

这篇文章给大家介绍greatest函数与least函数怎么在oracle中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

greatest (max(one),max(two),max(three))

求多列的最大值,oracle中的greatest 函数

已知表TB的数据如下

SQL> select * from tb;    ID CHINESE  MATH ENGLISH ---------- ---------- ---------- ----------  1001    89    98    87  1002    81    87    79

现在要得到如下的结果,该怎么来解决

ID CHINESE  MATH ENGLISH    MAX    MIN ---------- ---------- ---------- ---------- ---------- ----------  1001    89    98    87    98    87  1002    81    87    79    87    79

想了半天也没想到啥好办法,首先自然而然想到用MAX和MIN函数 ,但是显然这两个是聚集函数 ,是要作用在同一个column的一个Group上面的,而现在要得到的MAX和MIN的值却是作用于每一行上面的,如果要借助于MAX()和 MIN()的话,还需要对原表的数据结构进行下处理(先进行转列操作unpivot),但是显然不是很好。

看到有个网友回帖用greatest 和 least函数 来做,真是简洁漂亮,也为自己的孤陋寡闻而狂汗呀

解决方式如下

SQL> SELECT id, chinese, math, english,  2    greatest (chinese, math, english) max,  3    least(chinese, math, english) min  4  FROM tb;    ID CHINESE  MATH ENGLISH    MAX    MIN ---------- ---------- ---------- ---------- ---------- ----------  1001    89    98    87    98    87  1002    81    87    79    87    79

least的用法相同

语法介绍:


1 语法

GREATEST(expr_1, expr_2, ...expr_n)

2 说明

GREATEST(expr_1, expr_2, ...expr_n)函数从表达式(列、常量、计算值)expr_1,

expr_2, ... expr_n等中找出最大的数返回。在比较时,OracIe会自动按表达式的数据类型进行比较,以expr_1的数据类型为准。

3

允许使用的位置

过程性语句和SQL语句。

4 示例

4.1 示例一【数值】

expr_1为数值型。按大小进行比较。

全部为数值型,取出最大值为16:

SQL>SELECT GREATEST(2, 5, 12, 3, 16, 8, 9) A FROM DUAL;   A----------   16

部分为数值型,但是字符串可以根据expr_1的数据类型通过隐式类型转换转成数值型:

SQL>SELECT GREATEST(2, '5', 12, 3, 16, 8, 9) A FROM DUAL;   A----------  16

部分为数值型,但是字符串不能通过隐式类型转换成数值型会报错,因为字符串A不能转换成数值型:

SQL>SELECT GREATEST(2, 'A', 12, 3, 16, 8, 9) A FROM DUAL;SELECTGREATEST(2, 'A', 12, 3, 16, 8, 9) A FROM DUAL

ORA-01722:

无效数字

4.2 示例二【字符串】

expr_1为字符型。按首字母进行比较(如果相等则向下比较)

全部为字符型,取出最大值G:

SQL> SELECT GREATEST('A', 'B', 'C', 'D', 'E', 'F','G') A FROM DUAL;A-G

全部为字符型,首字母相等:

SQL> SELECT GREATEST('A', 'B', 'C', 'D', 'E','GA', 'GAB') A FROM DUAL;A---GAB

部分为字符型,会把非字符型转换成字符型:

SQL> SELECT GREATEST('A', 6, 7, 5000, 'E', 'F','G') A FROM DUAL;A-G

4.3 示例三【时间】

expr_1为时间类型。

全部为时间类型:

SQL> SELECTGREATEST(sysdate,TO_DATE('2014-08-01','YYYY-MM-DD')) A FROM DUAL;A-----------2014/8/1

部分为时间类型,不能进行隐式类型转换:

SQL> SELECT GREATEST(sysdate,'2014-08-01') A FROMDUAL;SELECTGREATEST(sysdate,'2014-08-01') A FROM DUAL

ORA-01861:文字与格式字符串不匹配

4.4 示例四【空值】

使用GREATEST取最大值的时候,当expr为函数的时候,不可避免的会产生空值。产生空值,函数GREATEST会怎么进行处理那:

expr_1为NULL时:

SQL> SELECT GREATEST(NULL, 'B', 'C', 'D', 'E','GA', 'GAB') A FROM DUAL;A-

expr_1不为NULL时,其它的expr为NULL时:

SQL> SELECT GREATEST('A', 'B', 'C', 'D', 'E',NULL, 'GAB') A FROM DUAL;A-

关于greatest函数与least函数怎么在oracle中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

函数 字符 类型 数值 字符型 最大 字符串 数据 示例 最大值 作用 内容 字母 时候 时间 更多 表达式 语句 语法 面的 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 上海挚品互联网科技有限公司 什么是科技互联网 喔噻互联网科技有限公司 互联网科技公司起名 科技互联网公司装修 科技信息互联网 金融科技 互联网金融 易通互联网络科技有限公司 广州善班互联网科技 科技类的互联网平台 互联网金融中的现代科技 南平创想时代互联网科技有限公司 中国航天科技大学国际工业互联网 湖南一路畅行互联网科技 世界互联网领先科技成果获奖 雨阳互联网卡科技有限公司 马化腾互联网科技教学 科技互联网专业工作会议发言稿 青岛互联网科技园 互联网科技战争 狮子座互联网科技有限公司 郑州华宇互联网科技 人人互联网科技是培训 互联网 科技服务平台 互联网金融中的现代科技 苏州铭阳互联网科技有限公司 成都互联网科技公司工作好不好 互联网科技包装股 山东蛋芒互联网科技有限公司
0