W bazie danych Oracle GREATEST()
funkcja zwraca największą z listy jednego lub więcej wyrażeń.
Składnia
Składnia wygląda tak:
GREATEST(expr [, expr ]...)
Pierwsze expr
służy do określenia typu zwrotu:
- Jeśli pierwsze
expr
jest liczbowy, to Oracle określa argument o najwyższym priorytecie liczbowym, niejawnie konwertuje pozostałe argumenty na ten typ danych przed porównaniem i zwraca ten typ danych. - Jeśli pierwsze
expr
jest nie numerycznie, a następnie każdeexpr
po tym, jak pierwszy jest niejawnie konwertowany na typ danych pierwszegoexpr
przed porównaniem.
Przykład
Oto przykład:
SELECT GREATEST('a', 'b', 'c')
FROM DUAL;
Wynik:
c
Oto kilka innych:
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;
Wynik:
r1 r2 r3 r4 r5 _____ ______ _____ _____ ______ a Dot 3 3 Cat
Wyrażenia
Argumenty mogą zawierać wyrażenia takie jak:
SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;
Wynik:
6
Daty
Oto porównanie ciągów dat:
SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;
Wynik:
01-JAN-21
Data jest zwracana w formacie daty bieżącej sesji. Zobacz, jak sprawdzić format daty bieżącej sesji.
Wartości puste
Jeśli jakikolwiek argument ma wartość null
, wynik to null
:
SET NULL 'null';
SELECT
GREATEST(null, 2),
GREATEST(1, null)
FROM DUAL;
Wynik:
GREATEST(NULL,2) GREATEST(1,NULL) ___________________ ___________________ null null
Domyślnie SQLcl i SQL*Plus zwracają spację za każdym razem, gdy w wyniku polecenia SQL SELECT
wystąpi wartość null oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Nieprawidłowa liczba argumentów
Wywołanie GREATEST()
bez żadnych argumentów powoduje błąd:
SELECT GREATEST()
FROM DUAL;
Wynik:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
Możesz także użyć LEAST()
aby zwrócić najmniejszą część listy jednego lub więcej wyrażeń.