PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

GREATEST()-Funktion in PostgreSQL

In PostgreSQL der GREATEST() Funktion gibt den größten (oder größten) Wert aus einer Liste beliebig vieler Ausdrücke zurück.

Der GREATEST() Die Funktion ist nicht im SQL-Standard enthalten, aber es ist eine beliebte Erweiterung, die von vielen großen RDBMS unterstützt wird.

Syntax

GREATEST(value [, ...])

Das bedeutet, dass wir der Funktion einen oder mehrere Werte übergeben können.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT GREATEST( 3, 15, 7 );

Ergebnis:

15

Strings

Hier ist ein Beispiel, in dem alle Argumente Zeichenfolgen sind:

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

Ergebnis:

Zebra

Termine

Hier ist ein Vergleich von Datumszeichenfolgen:

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

Ergebnis:

2027-12-31

Gemeinsamer Datentyp

Die Ausdrücke müssen alle in einen gemeinsamen Datentyp konvertierbar sein. Das Ergebnis verwendet diesen Typ.

Wenn die Ausdrücke nicht in einen gemeinsamen Datentyp konvertiert werden können, tritt ein Fehler auf:

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

Ergebnis:

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

Nullwerte

Nullwerte werden ignoriert, es sei denn, alle Ausdrücke sind null . Wenn alle Ausdrücke null sind , dann null wird zurückgegeben:

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

Ergebnis:

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

Standardmäßig gibt psql bei Nullwerten die leere Zeichenfolge zurück. In der ersten Zeile dieses Beispiels setze ich Nullwerte zur Ausgabe von <null> damit wir das Null-Ergebnis leichter sehen können.

Fehlende Argumente

Aufruf von GREATEST() ohne Argumente führt zu einem Fehler:

SELECT GREATEST();

Ergebnis:

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

Wir können jedoch ein Argument ohne Fehler übergeben:

SELECT GREATEST( 1 );

Ergebnis:

1