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.