В PostgreSQL GREATEST()
функцията връща най-голямата (или най-голямата) стойност от списък с произволен брой изрази.
GREATEST()
функцията не е включена в стандарта SQL, но е популярно разширение, което много основни RDBMS поддържат.
Синтаксис
GREATEST(value [, ...])
Това означава, че можем да предадем една или повече стойности на функцията.
Пример
Ето един прост пример за демонстрация:
SELECT GREATEST( 3, 15, 7 );
Резултат:
15
Стрингове
Ето пример, при който всички аргументи са низове:
SELECT GREATEST( 'Bear', 'Zebra', 'Ant' );
Резултат:
Zebra
Дати
Ето сравнение на низовете за дата:
SELECT GREATEST(date '2027-01-01', date '2027-12-31');
Резултат:
2027-12-31
Общ тип данни
Всички изрази трябва да бъдат конвертирани в общ тип данни. Резултатът ще използва този тип.
Ако изразите не могат да бъдат преобразувани в общ тип данни, възниква грешка:
SELECT GREATEST( 3, 'Fifteen', 7 );
Резултат:
ERROR: invalid input syntax for type integer: "Fifteen" LINE 1: SELECT GREATEST( 3, 'Fifteen', 7 ); ^
Нулеви стойности
Нулевите стойности се игнорират, освен ако всички изрази не са null
. Ако всички изрази са null
, след това null
се връща:
\pset null '<null>'
SELECT
GREATEST( 3, null, 7 ),
GREATEST( null, null, null );
Резултат:
greatest | greatest ----------+---------- 7 | <null>
По подразбиране psql връща празния низ за нулеви стойности. В първия ред в този пример зададох нулеви стойности за извеждане <null>
така че да ни улесни да видим нулевия резултат.
Липсващи аргументи
Извикване на GREATEST()
без никакви аргументи води до грешка:
SELECT GREATEST();
Резултат:
ERROR: syntax error at or near ")" LINE 1: SELECT GREATEST(); ^
Въпреки това можем да предадем един аргумент без грешка:
SELECT GREATEST( 1 );
Резултат:
1