ORACLE函数之GREATEST与mysql之GREATEST

一:ORACLE函数之GREATEST

GREATEST(expr_1, expr_2, …expr_n)函数从表达式(列、常量、计算值)expr_1, expr_2, … expr_n等中找出最大的数返回。在比较时,OracIe会自动按表达式的数据类型进行比较,以expr_1的数据类型为准。

1:expr_1为数值型。按大小进行比较,查出16

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

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

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

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

3:expr_1为时间类型。全部为时间类型:最大时间

SELECTGREATEST(sysdate,TO_DATE('2014-08-01','YYYY-MM-DD')) A FROM DUAL;

4:只要GREATEST的expr有一个为NULL,都会返回NULL。

expr_1为NULL时:返回-

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

expr_1不为NULL时,其它的expr为NULL时:返回-

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

注意比较时,要类型一致才可以比较。

https://blog.csdn.net/liangweiwei130/article/details/36384145

二:mysql之GREATEST

GREATEST(value1, value2, …);
LEAST(value1,value2,…);

  • 如果任何参数为NULL,则两个函数都将立即返回NULL,而不进行任何比较。

  • 如果在INT或REAL上下文中使用函数,或者所有参数都是整数值或REAL值,那么它们将分别作为INT和REAL来比较。

  • 如果参数由数字和字符串组成,则函数将它们作为数字进行比较。

  • 如果至少一个参数是非二进制(字符)字符串,则函数将将参数作为非二进制字符串进行比较。 在所有其他情况下,函数将参数作为二进制字符串进行比较

可以结合ifnull

INSERT INTO revenues(company_id,q1,q2,q3,q4)
VALUES (3,100,120,110,null);

eg

SELECT 
    company_id,
    LEAST(IFNULL(q1, 0),
            IFNULL(q2, 0),
            IFNULL(q3, 0),
            IFNULL(q4, 0)) low,
    GREATEST(IFNULL(q1, 0),
            IFNULL(q2, 0),
            IFNULL(q3, 0),
            IFNULL(q4, 0)) high
FROM
    revenues;

end

+------------+--------+--------+
| company_id | low    | high   |
+------------+--------+--------+
|          1 | 100.00 | 130.00 |
|          2 | 250.00 | 310.00 |
|          3 | 0.00   | 120.00 |
+------------+--------+--------+
3 rows in set
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值