1、语法
最大值: GREATEST(expr_1, expr_2, ...expr_n)
最小值: LEAST(expr_1, expr_2, ...expr_n)

2、说明
GREATEST(expr_1, expr_2, ...expr_n)函数从表达式(列、常量、计算值)expr_1, expr_2, ... expr_n等中找出最大的数返回。

在比较时,OracIe会自动按表达式的数据类型进行比较,以expr_1的数据类型为准。下面以Oracle为例:

示例一【数值】
expr_1为数值型。按大小进行比较。

①、全部为数值型,取出最大值为16:
SELECT GREATEST(2, 5, 12, 3, 16, 8, 9) RESULT FROM DUAL;

②、部分为数值型,但是字符串可以根据expr_1的数据类型通过隐式类型转换转成数值型:
SELECT GREATEST(2, '5', 12, 3, 16, 8, 9) RESULT FROM DUAL;

③、部分为数值型,但是字符串不能通过隐式类型转换成数值型会报错,因为字符串A不能转换成数值型:
SELECT GREATEST(2, 'A', 12, 3, 16, 8, 9) RESULT FROM DUAL;

示例二【字符串】
expr_1为字符型。按首字母进行比较(如果相等则向下比较)。

①、全部为字符型,取出最大值G:
SELECT GREATEST('A', 'B', 'C', 'D', 'E', 'F','G') RESULT FROM DUAL;

②、全部为字符型,首字母相等:
  SELECT GREATEST('A', 'B', 'C', 'D', 'E','GA', 'GAB') RESULT FROM DUAL;

③、部分为字符型,会把非字符型转换成字符型:
  SELECT GREATEST('A', 6, 7, 5000, 'E', 'F','G') RESULT FROM DUAL;

示例三【时间】
expr_1为时间类型。

①、全部为时间类型:
  SELECT GREATEST(sysdate,TO_DATE('2014-08-01','YYYY-MM-DD')) RESULT FROM DUAL;

②、部分为时间类型,不能进行隐式类型转换:
SELECT GREATEST(sysdate,'2014-08-01') RESULT FROM DUAL;

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

①、expr_1为NULL时:
  SELECT GREATEST(NULL, 'B', 'C', 'D', 'E','GA', 'GAB') RESULT FROM DUAL;

②、expr_1不为NULL时,其它的expr为NULL时:
  SELECT GREATEST('A', 'B', 'C', 'D', 'E',NULL, 'GAB') RESULT FROM DUAL;

由上可以发现,只要GREATEST的expr有一个为NULL,都会返回NULL。

SQL获取多个字段中最大小值的更多相关文章

  1. postgresql 函数获取多个字段的数字大小值

    1.GREATEST(n1,n2,n3,..........) 获取最大值 testdb=#SELECT GREATEST(,,,,,,,,,); +------------------------- ...

  2. SQL SERVER将某一列字段中的某个值替换为其他的值 分类: MSSQL 2014-11-05 13:11 67人阅读 评论(0) 收藏

    SQL SERVER将某一列字段中的某个值替换为其他的值 UPDATE 表名 SET 列名 = REPLACE(列名 ,'贷','袋') SQL SERVER"函数 replace 的参数 ...

  3. SQL中删除同一字段中重复的值

    /////////////////////目地:ZDJZ_DIS中 name字段有重复的值,删除重复的值 DELETE * FROM ZDJZ_DIS WHERE NAME IN (select NA ...

  4. SQL —— 获取重复某个字段的第一条记录

    ----------用来双重排序,且获取唯一 go SELECT ROW_NUMBER() OVER (ORDER BY AScore DESC,ATime ASC) AS Rank, * FROM ...

  5. sql 获取某一时段中每一天中最大的时间的一条记录

    SELECT *FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY CONVERT(CHAR(10), DataTime, 120) ORDER BY Data ...

  6. 教你在Java的普通类中轻松获取Session以及request中保存的值

    曾经有多少人因为不知如何在业务类中获取自己在Action或页面上保存在Session中值,当然也包括我,但是本人已经学到一种办法可以解决这个问题,来分享下,希望对你有多多少少的帮助! 如何在Java的 ...

  7. C# 如何获取自定义的config中节点的值,并修改节点的值

    现定义一个方法 DIYConfigHelper.cs using System; using System.Xml; using System.Configuration; using System. ...

  8. SQL查询出某字段不等于某值的行(其中有为NULL的字段)

    表1如下:TBD1100   TBD1101   TBD1102------------------------------------------  1001            水果       ...

  9. 获取web.xml配置文件中的初始化值

    TestServletConfig.java package com.huawei.config; import java.io.IOException;import java.util.Enumer ...

随机推荐

  1. 如何消灭飞机的“黑色十分钟”,AI来帮忙

    近年来,“AI的应用和落地”逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的“化学反应”.例如,在日常生活中,AI可以推送我们喜欢的新闻或视频,可以在拍照的时候识别场景提升照片的美感 ...

  2. 【论文笔记】Self-Supervised GAN :辅助性旋转损失的自监督生成式对抗网络

    这是CVPR2019上UCLA和google brain的一个工作.模型非常简单,利用辅助损失解决GAN不稳定问题:用旋转分类将辅助分类器对label的需求去掉,使图片可以直接对自己标注类别. Sel ...

  3. Java 异常处理专题,从入门到精通

    内置异常和Throwable核心方法 Java内置异常 可查异常(必须要在方法里面捕获或者抛出) ClassNoFoundException 应⽤程序试图加载类,找不到对应的类 IllegalAcce ...

  4. Python随机数函数

    Python随机数函数: ''' choice(seq) 从序列的元素中随机选出一个元素 randrange ([start,] stop [,step]) 从指定范围内,在指定步长递增的集合中 获取 ...

  5. PHP is_bool() 函数

    is_bool() 函数用于检测变量是否是布尔型.高佣联盟 www.cgewang.com PHP 版本要求:PHP 4, PHP 5, PHP 7 语法 bool is_bool ( mixed $ ...

  6. c# Dictionary的使用

    创建:    Dictionary<string, OverCaseData> dataDic = new Dictionary<string, OverCaseData>() ...

  7. 7.1 NOI模拟赛 计数问题 dp

    还是可以想出来的题目 不过考场上没有想出来 要 引以为戒. 初看觉得有点不可做 10分给到了爆搜. 考虑第一个特殊情况 B排列为1~m. 容易发现A排列中前m个数字 他们之间不能产生交换 且 第k个数 ...

  8. Golang | Go语言多态的实现与interface使用

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第11篇文章,我们一起来聊聊golang当中多态的这个话题. 如果大家系统的学过C++.Java等语言以及面向对象的 ...

  9. 基于AspectCore打造属性注入

    前言 源自于晓晨在成都.net社区群的一篇文章 <晓晨的ASP.NET Core 奇淫技巧之伪属性注入> 他的思路是 Ioc容器替换 ControllerActivator,因为只能在控制 ...

  10. 符合AUTOSAR(AP&CP)的嵌入式系统和软件设计工具

    AUTOSAR Builder功能介绍 AUTOSAR Builder 是达索旗下一种基于 Eclipse 的开放性.可扩展工具套件,用于设计和开发符合 AUTOSAR 标准的系统和软件.最新版本20 ...