当前位置: 首页 > 工具软件 > greatest > 使用案例 >

ORACLE函数之GREATEST与mysql之GREATEST

方树
2023-12-01

一: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
 类似资料: