Oracle
 sql >> Database >  >> RDS >> Oracle

GREATEST() Funzione in Oracle

In Oracle Database, il GREATEST() la funzione restituisce il massimo di un elenco di una o più espressioni.

Sintassi

La sintassi è questa:

GREATEST(expr [, expr ]...)

Il primo expr viene utilizzato per determinare il tipo di restituzione:

  • Se il primo expr è numerico, quindi Oracle determina l'argomento con la precedenza numerica più alta, converte implicitamente gli argomenti rimanenti in quel tipo di dati prima del confronto e restituisce quel tipo di dati.
  • Se il primo expr è non numerico, quindi ogni expr dopo che il primo è stato convertito implicitamente nel tipo di dati del primo expr prima del confronto.

Esempio

Ecco un esempio:

SELECT GREATEST('a', 'b', 'c')
FROM DUAL;

Risultato:

c

Eccone altri:

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;

Risultato:

   r1     r2    r3    r4     r5 
_____ ______ _____ _____ ______ 
a     Dot        3     3 Cat   

Espressioni

Gli argomenti possono includere espressioni come questa:

SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;

Risultato:

6

Date

Ecco un confronto delle stringhe di data:

SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;

Risultato:

01-JAN-21

La data viene restituita nel formato data della sessione corrente. Vedi Come controllare il formato della data della sessione corrente.

Valori Nulli

Se un argomento è null , il risultato è null :

SET NULL 'null';
SELECT 
    GREATEST(null, 2),
    GREATEST(1, null)
FROM DUAL;

Risultato:

   GREATEST(NULL,2)    GREATEST(1,NULL) 
___________________ ___________________ 
null                               null

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che si verifica un valore nullo come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Conteggio argomenti non valido

Chiamando GREATEST() senza alcun argomento genera un errore:

SELECT GREATEST()
FROM DUAL;

Risultato:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

Puoi anche usare LEAST() per restituire il minimo di un elenco di una o più espressioni.