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