sql >> Base de Datos >  >> RDS >> Oracle

Función GREATEST() en Oracle

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 cada expr después de que el primero se convierta implícitamente al tipo de datos del primer expr 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.