Oracle
 sql >> Datenbank >  >> RDS >> Oracle

GREATEST()-Funktion in Oracle

In der Oracle-Datenbank das GREATEST() Funktion gibt den größten einer Liste von einem oder mehreren Ausdrücken zurück.

Syntax

Die Syntax lautet wie folgt:

GREATEST(expr [, expr ]...)

Der erste expr wird verwendet, um den Rückgabetyp zu bestimmen:

  • Wenn der erste expr numerisch ist, bestimmt Oracle das Argument mit dem höchsten numerischen Vorrang, konvertiert die verbleibenden Argumente vor dem Vergleich implizit in diesen Datentyp und gibt diesen Datentyp zurück.
  • Wenn der erste expr ist nicht numerisch, dann jeder expr nach dem ersten wird implizit in den Datentyp des ersten expr konvertiert vor dem Vergleich.

Beispiel

Hier ist ein Beispiel:

SELECT GREATEST('a', 'b', 'c')
FROM DUAL;

Ergebnis:

c

Hier sind noch einige:

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;

Ergebnis:

   r1     r2    r3    r4     r5 
_____ ______ _____ _____ ______ 
a     Dot        3     3 Cat   

Ausdrücke

Die Argumente können Ausdrücke wie diesen enthalten:

SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;

Ergebnis:

6

Termine

Hier ist ein Vergleich von Datumszeichenfolgen:

SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;

Ergebnis:

01-JAN-21

Das Datum wird im Datumsformat der aktuellen Sitzung zurückgegeben. Siehe So überprüfen Sie das Datumsformat der aktuellen Sitzung.

Nullwerte

Wenn irgendein Argument null ist , ist das Ergebnis null :

SET NULL 'null';
SELECT 
    GREATEST(null, 2),
    GREATEST(1, null)
FROM DUAL;

Ergebnis:

   GREATEST(NULL,2)    GREATEST(1,NULL) 
___________________ ___________________ 
null                               null

Standardmäßig geben SQLcl und SQL*Plus immer dann ein Leerzeichen zurück, wenn als Ergebnis eines SQL SELECT ein Nullwert auftritt Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Ungültige Argumentanzahl

Aufruf von GREATEST() ohne Argumente führt zu einem Fehler:

SELECT GREATEST()
FROM DUAL;

Ergebnis:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

Sie können auch LEAST() verwenden um den kleinsten einer Liste von einem oder mehreren Ausdrücken zurückzugeben.