跳到主要内容
版本: 最新版本-3.5

greatest

返回一个或多个参数列表中的最大值。

通常,返回值与输入的数据类型相同。

参数比较基于以下规则:

  • 如果任何输入参数为 NULL,则返回 NULL。

  • 如果至少一个参数是 DOUBLE 类型,则所有参数都将作为 DOUBLE 值进行比较。 相同的规则适用于 DECIMAL 和 FLOAT 数据类型。

  • 如果参数是数字和字符串的混合,但字符串可以转换为数字,则参数将作为数字进行比较。 如果字符串无法转换为数字,则参数将作为字符串进行比较。

  • 如果参数是字符,则根据第一个字母的字母顺序进行比较。

语法

GREATEST(expr1,...);

参数

expr1:要比较的表达式。 它支持以下数据类型:

  • SMALLINT

  • TINYINT

  • INT

  • BIGINT

  • LARGEINT

  • FLOAT

  • DOUBLE

  • DECIMALV2

  • DECIMAL32

  • DECIMAL64

  • DECIMAL128

  • DATETIME

  • VARCHAR

示例

示例 1:返回单个输入的最大值。

mysql> select greatest(3);
+-------------+
| greatest(3) |
+-------------+
| 3 |
+-------------+
1 row in set (0.01 sec)

示例 2:返回列表中的最大值。

mysql> select greatest(3,4,5,5,6);
+-------------------------+
| greatest(3, 4, 5, 5, 6) |
+-------------------------+
| 6 |
+-------------------------+
1 row in set (0.00 sec)

示例 3:一个参数是 DOUBLE 类型,并返回一个 DOUBLE 值。

mysql> select greatest(7,4.5);
+------------------+
| greatest(7, 4.5) |
+------------------+
| 7.0 |
+------------------+
1 row in set (0.05 sec)

示例 4:输入参数是数字和字符串的混合,但字符串可以转换为数字。 参数将作为数字进行比较。

mysql> select greatest(7,'9');
+------------------+
| greatest(7, '9') |
+------------------+
| 9 |
+------------------+
1 row in set (0.04 sec)

示例 5:输入参数是数字和字符串的混合,但字符串无法转换为数字。 参数将作为字符串进行比较。 字符串'1'小于'at'

select greatest(1,'at');
+-------------------+
| greatest(1, 'at') |
+-------------------+
| at |
+-------------------+

示例 6:输入参数是字符。 字母Z具有最大值。

mysql> select greatest('A','B','Z');
+-------------------------+
| greatest('A', 'B', 'Z') |
+-------------------------+
| Z |
+-------------------------+
1 row in set (0.00 sec)

关键词

GREATEST, greatest