sql >> Databasteknik >  >> RDS >> PostgreSQL

GREATEST() Funktion i PostgreSQL

I PostgreSQL, GREATEST() funktion returnerar det största (eller största) värdet från en lista med valfritt antal uttryck.

GREATEST() funktion ingår inte i SQL-standarden, men det är ett populärt tillägg som många stora RDBMS stödjer.

Syntax

GREATEST(value [, ...])

Det betyder att vi kan skicka ett eller flera värden till funktionen.

Exempel

Här är ett enkelt exempel att visa:

SELECT GREATEST( 3, 15, 7 );

Resultat:

15

Strängar

Här är ett exempel där alla argument är strängar:

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

Resultat:

Zebra

Datum

Här är en jämförelse av datumsträngar:

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

Resultat:

2027-12-31

Vanlig datatyp

Uttrycken måste alla kunna konverteras till en gemensam datatyp. Resultatet kommer att använda denna typ.

Om uttrycken inte kan konverteras till en vanlig datatyp uppstår ett fel:

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

Resultat:

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

Nullvärden

Nullvärden ignoreras om inte alla uttryck är null . Om alla uttryck är null , sedan null returneras:

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

Resultat:

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

Som standard returnerar psql den tomma strängen på null-värden. I den första raden i det här exemplet ställer jag in nollvärden för att mata ut <null> så att det gör det lättare för oss att se nollresultatet.

Argument saknas

Anropar GREATEST() utan några argument resulterar i ett fel:

SELECT GREATEST();

Resultat:

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

Däremot kan vi skicka ett argument utan fel:

SELECT GREATEST( 1 );

Resultat:

1

  1. Hur man utför grupperad rankning i MySQL

  2. Att använda kolumnalias i WHERE-satsen i MySQL-frågan ger ett fel

  3. COMPOSE() Funktion i Oracle

  4. Hur programmerar man en MySQL-utlösare för att infoga rad i en annan tabell?