sql >> Database teknologi >  >> RDS >> Oracle

STØRSTE() funktion i Oracle

I Oracle Database er GREATEST() funktion returnerer den største af en liste med et eller flere udtryk.

Syntaks

Syntaksen ser sådan ud:

GREATEST(expr [, expr ]...)

Den første expr bruges til at bestemme returtypen:

  • Hvis den første expr er numerisk, så bestemmer Oracle argumentet med den højeste numeriske forrang, konverterer implicit de resterende argumenter til den datatype før sammenligningen og returnerer den datatype.
  • Hvis den første expr er ikke numerisk, derefter hver expr efter den første er implicit konverteret til datatypen for den første expr før sammenligningen.

Eksempel

Her er et eksempel:

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

Resultat:

c

Her er nogle flere:

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;

Resultat:

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

Udtryk

Argumenterne kan indeholde udtryk som dette:

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

Resultat:

6

Datoer

Her er en sammenligning af datostrenge:

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

Resultat:

01-JAN-21

Datoen returneres i datoformatet for den aktuelle session. Se, hvordan du kontrollerer datoformatet for den aktuelle session.

Nul-værdier

Hvis et argument er null , resultatet er null :

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

Resultat:

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

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Ugyldigt argumentantal

Kalder GREATEST() uden nogen argumenter resulterer i en fejl:

SELECT GREATEST()
FROM DUAL;

Resultat:

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

Du kan også bruge LEAST() for at returnere det mindste af en liste med et eller flere udtryk.


  1. Sådan installeres SQL Server på Ubuntu 18.04

  2. understøtter rails postgres adapter ssl?

  3. Parallel unnest() og sorteringsrækkefølge i PostgreSQL

  4. SQL GROUP BY-klausul for begyndere