mysql.h


LEAST

LEAST(X,Y,...)

Con dos o más argumentos, devuelve el menor de ellos. Los argumentos son comparados usando las reglas siguientes:

  • Si el valor de retorno se usa en un contexto INTEGER, o si todos los argumentos son valores enteros, se comparan como enteros.
  • Si el valor de retorno se usa en un contexto REAL, o si todos los argumentos son valores reales, se comparan como reales.
  • Si cualquier argumento es una cadena case-sensitive, los argumentos se comparan como cadenas case-sensitive.
  • En otros casos, los argumentos se comparan como cadenas sin tener en cuenta mayúsculas y minúsculas (case-insensitive):
mysql> SELECT LEAST(2,0);
+------------+
| LEAST(2,0) |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)

mysql> SELECT LEAST(34.0,3.0,5.0,767.0);
+---------------------------+
| LEAST(34.0,3.0,5.0,767.0) |
+---------------------------+
|                       3.0 |
+---------------------------+
1 row in set (0.00 sec)

mysql> SELECT LEAST("B","A","C");
+--------------------+
| LEAST("B","A","C") |
+--------------------+
| A                  |
+--------------------+
1 row in set (0.00 sec)

En versiones de MySQL previas a 3.22.5, se puede usar MIN() en lugar de LEAST. Hay que tener en cuenta que las reglas anteriores pueden producir resultados extraños en algunos casos límite:

mysql> SELECT CAST(least(3600, 9223372036854775808.0) as SIGNED);
+----------------------------------------------------+
| CAST(least(3600, 9223372036854775808.0) as SIGNED) |
+----------------------------------------------------+
|                               -9223372036854775808 |
+----------------------------------------------------+
1 row in set (0.00 sec)

Esto ocurre porque MySQL lee 9223372036854775808.0 en un contexto entero y la representación entera no es suficiente para almacenar el valor así que se convierte a un entero con signo.