sql >> Databáze >  >> RDS >> Oracle

Funkce GREATEST() v Oracle

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ího expr 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ů.


  1. Uložená procedura pro získání nastavení instance

  2. Počítat řádky tabulky

  3. Co znamená ORDER BY (SELECT NULL)?

  4. Oracle Concurrent Manager