En Oracle Database, el GREATEST()
la función devuelve la mayor de una lista de una o más expresiones.
Sintaxis
La sintaxis es así:
GREATEST(expr [, expr ]...)
La primera expr
se utiliza para determinar el tipo de devolución:
- Si la primera
expr
es numérico, Oracle determina el argumento con la prioridad numérica más alta, convierte implícitamente los argumentos restantes a ese tipo de datos antes de la comparación y devuelve ese tipo de datos. - Si la primera
expr
es no numérico, luego cadaexpr
después de que el primero se convierta implícitamente al tipo de datos del primerexpr
antes de la comparación.
Ejemplo
He aquí un ejemplo:
SELECT GREATEST('a', 'b', 'c')
FROM DUAL;
Resultado:
c
Aquí hay algunos más:
SELECT
GREATEST('A', 'a') AS "r1",
GREATEST('Cat', 'Dog', 'Dot') AS "r2",
GREATEST(1, 2, 3) AS "r3",
GREATEST(1, '2', 3) AS "r4",
GREATEST('Cat', '2001-12-31') AS "r5"
FROM DUAL;
Resultado:
r1 r2 r3 r4 r5 _____ ______ _____ _____ ______ a Dot 3 3 Cat
Expresiones
Los argumentos pueden incluir expresiones como esta:
SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;
Resultado:
6
Fechas
Aquí hay una comparación de cadenas de fecha:
SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;
Resultado:
01-JAN-21
La fecha se devuelve en el formato de fecha de la sesión actual. Consulte Cómo comprobar el formato de fecha de la sesión actual.
Valores nulos
Si algún argumento es null
, el resultado es null
:
SET NULL 'null';
SELECT
GREATEST(null, 2),
GREATEST(1, null)
FROM DUAL;
Resultado:
GREATEST(NULL,2) GREATEST(1,NULL) ___________________ ___________________ null null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que se produce un valor nulo como resultado de un SQL SELECT
declaración.
Sin embargo, puede usar SET NULL
para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null
debe ser devuelto.
Recuento de argumentos no válidos
Llamando a GREATEST()
sin ningún argumento da como resultado un error:
SELECT GREATEST()
FROM DUAL;
Resultado:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
También puede usar LEAST()
para devolver el menor de una lista de una o más expresiones.