sql >> Database >  >> RDS >> PostgreSQL

GREATEST() Functie in PostgreSQL

In PostgreSQL is de GREATEST() functie retourneert de grootste (of grootste) waarde uit een lijst van een willekeurig aantal uitdrukkingen.

De GREATEST() functie is niet opgenomen in de SQL-standaard, maar het is een populaire extensie die door veel grote RDBMS'en wordt ondersteund.

Syntaxis

GREATEST(value [, ...])

Dit betekent dat we een of meer waarden aan de functie kunnen doorgeven.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

SELECT GREATEST( 3, 15, 7 );

Resultaat:

15

Snaren

Hier is een voorbeeld waarbij alle argumenten strings zijn:

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

Resultaat:

Zebra

Datums

Hier is een vergelijking van datumreeksen:

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

Resultaat:

2027-12-31

Algemeen gegevenstype

De expressies moeten allemaal converteerbaar zijn naar een algemeen gegevenstype. Het resultaat zal dit type gebruiken.

Als de uitdrukkingen niet kunnen worden geconverteerd naar een algemeen gegevenstype, treedt er een fout op:

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

Resultaat:

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

Null-waarden

Null-waarden worden genegeerd, tenzij alle expressies null zijn . Als alle uitdrukkingen null zijn , dan null wordt geretourneerd:

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

Resultaat:

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

Standaard retourneert psql de lege tekenreeks voor null-waarden. In de eerste regel in dit voorbeeld stel ik null-waarden in om <null> . uit te voeren zodat we het null-resultaat gemakkelijker kunnen zien.

Ontbrekende argumenten

GREATEST() . aanroepen zonder argumenten resulteert in een fout:

SELECT GREATEST();

Resultaat:

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

We kunnen echter één argument foutloos doorgeven:

SELECT GREATEST( 1 );

Resultaat:

1

  1. Wat is SQL?

  2. Hoe PL SQL-code in Oracle te verpakken?

  3. MySQL-status weergeven - actieve of totale verbindingen?

  4. Hoe kan ik een lijst met elementnamen krijgen van een XML-waarde in SQL Server?