В Oracle Database, GREATEST()
функцията връща най-големия от списък от един или повече изрази.
Синтаксис
Синтаксисът е така:
GREATEST(expr [, expr ]...)
Първият expr
се използва за определяне на типа връщане:
- Ако първият
expr
е числов, тогава Oracle определя аргумента с най-висок числов приоритет, имплицитно преобразува останалите аргументи в този тип данни преди сравнението и връща този тип данни. - Ако първият
expr
е не числово, след което всекиexpr
след като първият се преобразува имплицитно към типа данни на първияexpr
преди сравнението.
Пример
Ето един пример:
SELECT GREATEST('a', 'b', 'c')
FROM DUAL;
Резултат:
c
Ето още няколко:
SELECT
GREATEST('A', 'a') AS "r1",
GREATEST('Cat', 'Dog', 'Dot') AS "r2",
GREATEST(1, 2, 3) AS "r3",
GREATEST(1, '2', 3) AS "r4",
GREATEST('Cat', '2001-12-31') AS "r5"
FROM DUAL;
Резултат:
r1 r2 r3 r4 r5 _____ ______ _____ _____ ______ a Dot 3 3 Cat
Изрази
Аргументите могат да включват изрази като този:
SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;
Резултат:
6
Дати
Ето сравнение на низовете за дата:
SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;
Резултат:
01-JAN-21
Датата се връща във формата на датата на текущата сесия. Вижте как да проверите формата на датата на текущата сесия.
Нулеви стойности
Ако някой аргумент е null
, резултатът е null
:
SET NULL 'null';
SELECT
GREATEST(null, 2),
GREATEST(1, null)
FROM DUAL;
Резултат:
GREATEST(NULL,2) GREATEST(1,NULL) ___________________ ___________________ null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство, когато се появи нулева стойност в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Невалиден брой аргументи
Извикване на GREATEST()
без никакви аргументи води до грешка:
SELECT GREATEST()
FROM DUAL;
Резултат:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
Можете също да използвате LEAST()
за да върне най-малкото от списък от един или повече изрази.