Welcome 微信登录

首页 / 数据库 / MySQL / Oracle函数之GREATEST函数详解实例

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的expr有一个为NULL,都会返回NULL。--------------------------------------分割线 --------------------------------------Ubuntu 14.04下安装MySQL http://www.linuxidc.com/Linux/2014-05/102366.htm《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF http://www.linuxidc.com/Linux/2014-03/98821.htmUbuntu 14.04 LTS 安装 LNMP NginxPHP5 (PHP-FPM)MySQL http://www.linuxidc.com/Linux/2014-05/102351.htmUbuntu 14.04下搭建MySQL主从服务器 http://www.linuxidc.com/Linux/2014-05/101599.htmUbuntu 12.04 LTS 构建高可用分布式 MySQL 集群 http://www.linuxidc.com/Linux/2013-11/93019.htmUbuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb http://www.linuxidc.com/Linux/2013-08/89270.htm--------------------------------------分割线 --------------------------------------更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址