Returns the highest value observed in its arguments.

Highest is determined by the collation rules of the data passed in.


This function is not to be confused with MAX, which is an aggregate function returning the highest value in all rows in an aggregation.


GREATEST ( expression, expression [, expression ...] )


  • expression: any number of expressions. This may be a column name, the result of another function, or a math operation.

Return Type

The highest value, in the type of the input.

For example, if all arguments are integers, they are compared as integers. If one argument is a decimal type, they are compared as decimal types. If arguments are a mix of strings and numbers, they are compared as numbers. If an argument is a nonbinary string, the arguments are compared as nonbinary strings.


| GREATEST(1, 2, 3) |
|                 3 |
SELECT GREATEST('a', 'b', '_', '9', 'c');
| GREATEST('a', 'b', '_', '9', 'c') |
| _                                 |


Implicit Collation

When character_set_server is set to utf8, string literals with characters using 4-byte encoding are implicitly assigned binary collation and processed as a sequence of bytes rather than characters. This implicit conversion to binary collation causes string functions to return unexpected results. To avoid using implicit binary collation, either use explicit type casting or use database columns defined with the utf8mb4 character set.

For more information, refer to Implicit Collation in Special Cases.

Last modified: April 4, 2023

Was this article helpful?