MariaDB GREATEST() 函数的基础用法与实例

MariaDB GREATEST() 函数是一个用于返回一组值中最大值的函数。

发布于

MariaDB GREATEST() 函数是一个用于返回一组值中最大值的函数。函数可以接受任意数量的参数,参数可以是数字,字符串,日期,时间,或者其他可比较的类型。函数会根据参数的类型进行隐式转换,然后返回最大的参数值。

语法

MariaDB GREATEST() 函数的语法如下:

GREATEST(value1, value2, ..., valueN)

其中,value1, value2, ..., valueN 是一组要比较的值,可以是常量,变量,表达式,或者列名。函数会返回这组值中最大的值,如果所有的值都为 NULL,那么函数也会返回 NULL。

MariaDB GREATEST() 函数的返回值的类型取决于参数的类型,函数会遵循以下的规则:

  • 如果所有的参数都是整数,那么返回值也是整数。
  • 如果有任何一个参数是浮点数,那么返回值也是浮点数。
  • 如果有任何一个参数是字符串,那么返回值也是字符串,按照字典序进行比较。
  • 如果有任何一个参数是日期,时间,或者日期时间,那么返回值也是日期,时间,或者日期时间,按照时间顺序进行比较。

实例

下面是一些使用 MariaDB GREATEST() 函数的实例。

返回一组数字中的最大值

在这个实例中,我们使用 MariaDB GREATEST() 函数返回一组数字中的最大值。我们可以看到,函数会根据参数的类型返回相应的类型,如果有浮点数,那么返回值也是浮点数。

SELECT GREATEST(1, 2, 3, 4, 5);
-- 返回值为 5,类型为整数

SELECT GREATEST(1.5, 2.3, 3.7, 4.1, 5.9);
-- 返回值为 5.9,类型为浮点数

SELECT GREATEST(1, 2.5, 3, 4.5, 5);
-- 返回值为 5,类型为浮点数
+-------------------------+
| GREATEST(1, 2, 3, 4, 5) |
+-------------------------+
|                       5 |
+-------------------------+

+-----------------------------------+
| GREATEST(1.5, 2.3, 3.7, 4.1, 5.9) |
+-----------------------------------+
|                               5.9 |
+-----------------------------------+

+-----------------------------+
| GREATEST(1, 2.5, 3, 4.5, 5) |
+-----------------------------+
|                         5.0 |
+-----------------------------+

返回一组字符串中的最大值

在这个实例中,我们使用 MariaDB GREATEST() 函数返回一组字符串中的最大值。我们可以看到,函数会按照字典序进行比较,返回最大的字符串。

SELECT GREATEST('apple', 'banana', 'cherry', 'date', 'elderberry');
-- 返回值为 'elderberry',类型为字符串

SELECT GREATEST('a', 'b', 'c', 'd', 'e');
-- 返回值为 'e',类型为字符串

SELECT GREATEST('A', 'B', 'C', 'D', 'E');
-- 返回值为 'E',类型为字符串
+-------------------------------------------------------------+
| GREATEST('apple', 'banana', 'cherry', 'date', 'elderberry') |
+-------------------------------------------------------------+
| elderberry                                                  |
+-------------------------------------------------------------+

+-----------------------------------+
| GREATEST('a', 'b', 'c', 'd', 'e') |
+-----------------------------------+
| e                                 |
+-----------------------------------+

+-----------------------------------+
| GREATEST('A', 'B', 'C', 'D', 'E') |
+-----------------------------------+
| E                                 |
+-----------------------------------+

返回一组日期,时间,或者日期时间中的最大值

在这个实例中,我们使用 MariaDB GREATEST() 函数返回一组日期,时间,或者日期时间中的最大值。我们可以看到,函数会按照时间顺序进行比较,返回最大的日期,时间,或者日期时间。

SELECT GREATEST('2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01', '2021-05-01');
-- 返回值为 '2021-05-01',类型为日期

SELECT GREATEST('10:00:00', '11:00:00', '12:00:00', '13:00:00', '14:00:00');
-- 返回值为 '14:00:00',类型为时间

SELECT GREATEST('2021-01-01 10:00:00', '2021-02-01 11:00:00', '2021-03-01 12:00:00', '2021-04-01 13:00:00', '2021-05-01 14:00:00');
-- 返回值为 '2021-05-01 14:00:00',类型为日期时间
+--------------------------------------------------------------------------------+
| GREATEST('2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01', '2021-05-01') |
+--------------------------------------------------------------------------------+
| 2021-05-01                                                                     |
+--------------------------------------------------------------------------------+

+----------------------------------------------------------------------+
| GREATEST('10:00:00', '11:00:00', '12:00:00', '13:00:00', '14:00:00') |
+----------------------------------------------------------------------+
| 14:00:00                                                             |
+----------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------+
| GREATEST('2021-01-01 10:00:00', '2021-02-01 11:00:00', '2021-03-01 12:00:00', '2021-04-01 13:00:00', '2021-05-01 14:00:00') |
+-----------------------------------------------------------------------------------------------------------------------------+
| 2021-05-01 14:00:00                                                                                                         |
+-----------------------------------------------------------------------------------------------------------------------------+

返回一组不同类型的值中的最大值

在这个实例中,我们使用 MariaDB GREATEST() 函数返回一组不同类型的值中的最大值。我们可以看到,函数会根据参数的类型进行隐式转换,然后返回最大的值。如果参数的类型不兼容,那么函数会返回 NULL。

SELECT GREATEST(1, '2', 3, '4', 5);
-- 返回值为 5,类型为整数,字符串会被转换为数字

SELECT GREATEST('2021-01-01', '10:00:00', '2021-01-01 10:00:00');
-- 返回值为 '2021-01-01 10:00:00',类型为日期时间,日期和时间会被转换为日期时间

SELECT GREATEST(-1, 'a', -3, 'b', -5);
-- 返回值为 5,类型为,数字和字符串比较时,将尝试将字符串转为数字,如果转换失败则转换为0
+-----------------------------+
| GREATEST(1, '2', 3, '4', 5) |
+-----------------------------+
|                           5 |
+-----------------------------+

+-----------------------------------------------------------+
| GREATEST('2021-01-01', '10:00:00', '2021-01-01 10:00:00') |
+-----------------------------------------------------------+
| 2021-01-01 10:00:00                                       |
+-----------------------------------------------------------+

+--------------------------------+
| GREATEST(-1, 'a', -3, 'b', -5) |
+--------------------------------+
|                              0 |
+--------------------------------+

相关函数

除了 MariaDB GREATEST() 函数,还有一些与之相反的函数,如下:

  • LEAST(value1, value2, ..., valueN):用于返回一组值中最小值的函数。函数的参数和返回值的类型和规则与 GREATEST() 函数相同,只是比较的方向相反。
  • COALESCE(value1, value2, ..., valueN):用于返回一组值中第一个非 NULL 值的函数。函数的参数可以是任意类型,返回值的类型与第一个非 NULL 值的类型相同。如果所有的值都为 NULL,那么函数也会返回 NULL。

结论

MariaDB GREATEST() 函数是一个用于返回一组值中最大值的函数。函数可以接受任意数量的参数,参数可以是数字,字符串,日期,时间,或者其他可比较的类型。函数会根据参数的类型进行隐式转换,然后返回最大的参数值。函数的返回值的类型也取决于参数的类型,函数会遵循一些规则来确定返回值的类型。如果参数的类型不兼容,那么函数会返回 NULL。函数会忽略 NULL 值,返回非 NULL 值中的最大值。除了 MariaDB GREATEST() 函数,还有一些与之相反或相关的函数,可以用于返回最小值或第一个非 NULL 值。