PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

GREATEST() Funzione in PostgreSQL

In PostgreSQL, il GREATEST() La funzione restituisce il valore più grande (o più grande) da un elenco di qualsiasi numero di espressioni.

Il GREATEST() La funzione non è inclusa nello standard SQL, ma è un'estensione popolare supportata da molti dei principali RDBMS.

Sintassi

GREATEST(value [, ...])

Ciò significa che possiamo passare uno o più valori alla funzione.

Esempio

Ecco un semplice esempio da dimostrare:

SELECT GREATEST( 3, 15, 7 );

Risultato:

15

Stringhe

Ecco un esempio in cui tutti gli argomenti sono stringhe:

SELECT GREATEST( 'Bear', 'Zebra', 'Ant' );

Risultato:

Zebra

Date

Ecco un confronto delle stringhe di data:

SELECT GREATEST(date '2027-01-01', date '2027-12-31');

Risultato:

2027-12-31

Tipo di dati comune

Le espressioni devono essere tutte convertibili in un tipo di dati comune. Il risultato utilizzerà questo tipo.

Se le espressioni non possono essere convertite in un tipo di dati comune, si verifica un errore:

SELECT GREATEST( 3, 'Fifteen', 7 );

Risultato:

ERROR:  invalid input syntax for type integer: "Fifteen"
LINE 1: SELECT GREATEST( 3, 'Fifteen', 7 );
                            ^

Valori Nulli

I valori Null vengono ignorati a meno che tutte le espressioni non siano null . Se tutte le espressioni sono null , quindi null viene restituito:

\pset null '<null>'
SELECT 
    GREATEST( 3, null, 7 ),
    GREATEST( null, null, null );

Risultato:

 greatest | greatest 
----------+----------
        7 | <null>

Per impostazione predefinita, psql restituisce la stringa vuota su valori null. Nella prima riga di questo esempio ho impostato valori null per l'output <null> in modo che ci sia più facile vedere il risultato nullo.

Argomenti mancanti

Chiamando GREATEST() senza alcun argomento genera un errore:

SELECT GREATEST();

Risultato:

ERROR:  syntax error at or near ")"
LINE 1: SELECT GREATEST();
                        ^

Tuttavia, possiamo passare un argomento senza errori:

SELECT GREATEST( 1 );

Risultato:

1