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