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
exprjest 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
exprjest nie numerycznie, a następnie każdeexprpo tym, jak pierwszy jest niejawnie konwertowany na typ danych pierwszegoexprprzed 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ń.