V databázi Oracle je to GREATEST()
funkce vrací největší ze seznamu jednoho nebo více výrazů.
Syntaxe
Syntaxe vypadá takto:
GREATEST(expr [, expr ]...)
První expr
se používá k určení návratového typu:
- Pokud je první
expr
je číselný, pak Oracle určí argument s nejvyšší číselnou prioritou, implicitně převede zbývající argumenty na tento datový typ před porovnáním a vrátí tento datový typ. - Pokud je první
expr
není číselné, pak každýexpr
po prvním je implicitně převedeno na datový typ prvníhoexpr
před srovnáním.
Příklad
Zde je příklad:
SELECT GREATEST('a', 'b', 'c')
FROM DUAL;
Výsledek:
c
Zde jsou některé další:
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;
Výsledek:
r1 r2 r3 r4 r5 _____ ______ _____ _____ ______ a Dot 3 3 Cat
Výrazy
Argumenty mohou obsahovat výrazy jako je tento:
SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;
Výsledek:
6
Data
Zde je srovnání datových řetězců:
SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;
Výsledek:
01-JAN-21
Datum je vráceno ve formátu data aktuální relace. Viz Jak zkontrolovat formát data aktuální relace.
Nulové hodnoty
Pokud je některý argument null
, výsledkem je null
:
SET NULL 'null';
SELECT
GREATEST(null, 2),
GREATEST(1, null)
FROM DUAL;
Výsledek:
GREATEST(NULL,2) GREATEST(1,NULL) ___________________ ___________________ null null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT
objeví hodnota null. prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Neplatný počet argumentů
Volání GREATEST()
bez jakýchkoli argumentů vede k chybě:
SELECT GREATEST()
FROM DUAL;
Výsledek:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
Můžete také použít LEAST()
vrátíte nejmenší ze seznamu jednoho nebo více výrazů.