W PostgreSQL GREATEST()
funkcja zwraca największą (lub największą) wartość z listy dowolnej liczby wyrażeń.
GREATEST()
funkcja nie jest zawarta w standardzie SQL, ale jest popularnym rozszerzeniem, które obsługuje wiele głównych RDBMS.
Składnia
GREATEST(value [, ...])
Oznacza to, że możemy przekazać do funkcji jedną lub więcej wartości.
Przykład
Oto prosty przykład do zademonstrowania:
SELECT GREATEST( 3, 15, 7 );
Wynik:
15
Struny
Oto przykład, w którym wszystkie argumenty są ciągami:
SELECT GREATEST( 'Bear', 'Zebra', 'Ant' );
Wynik:
Zebra
Daty
Oto porównanie ciągów dat:
SELECT GREATEST(date '2027-01-01', date '2027-12-31');
Wynik:
2027-12-31
Wspólny typ danych
Wszystkie wyrażenia muszą być konwertowalne na wspólny typ danych. Wynik użyje tego typu.
Jeśli wyrażeń nie można przekonwertować na typowy typ danych, pojawia się błąd:
SELECT GREATEST( 3, 'Fifteen', 7 );
Wynik:
ERROR: invalid input syntax for type integer: "Fifteen" LINE 1: SELECT GREATEST( 3, 'Fifteen', 7 ); ^
Wartości puste
Wartości null są ignorowane, chyba że wszystkie wyrażenia mają wartość null
. Jeśli wszystkie wyrażenia są null
, a następnie null
jest zwracany:
\pset null '<null>'
SELECT
GREATEST( 3, null, 7 ),
GREATEST( null, null, null );
Wynik:
greatest | greatest ----------+---------- 7 | <null>
Domyślnie psql zwraca pusty ciąg na wartości null. W pierwszym wierszu tego przykładu ustawiłem wartości null na wyjście <null>
aby ułatwić nam zobaczenie wyniku zerowego.
Brakujące argumenty
Wywołanie GREATEST()
bez żadnych argumentów powoduje błąd:
SELECT GREATEST();
Wynik:
ERROR: syntax error at or near ")" LINE 1: SELECT GREATEST(); ^
Możemy jednak przekazać jeden argument bez błędu:
SELECT GREATEST( 1 );
Wynik:
1