I Oracle Database, GREATEST()
funktion returnerar det största av en lista med ett eller flera uttryck.
Syntax
Syntaxen ser ut så här:
GREATEST(expr [, expr ]...)
Den första expr
används för att bestämma returtypen:
- Om den första
expr
är numerisk, bestämmer Oracle argumentet med den högsta numeriska prioritet, konverterar implicit de återstående argumenten till den datatypen före jämförelsen och returnerar den datatypen. - Om den första
expr
är inte numerisk, sedan varjeexpr
efter att den första implicit konverterats till datatypen för den förstaexpr
före jämförelsen.
Exempel
Här är ett exempel:
SELECT GREATEST('a', 'b', 'c')
FROM DUAL;
Resultat:
c
Här är några fler:
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
Uttryck
Argumenten kan innehålla uttryck som detta:
SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;
Resultat:
6
Datum
Här är en jämförelse av datumsträngar:
SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;
Resultat:
01-JAN-21
Datumet returneras i datumformatet för den aktuella sessionen. Se Hur du kontrollerar datumformatet för den aktuella sessionen.
Nullvärden
Om något argument är null
, resultatet är null
:
SET NULL 'null';
SELECT
GREATEST(null, 2),
GREATEST(1, null)
FROM DUAL;
Resultat:
GREATEST(NULL,2) GREATEST(1,NULL) ___________________ ___________________ null null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när ett nollvärde inträffar som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Ogiltigt antal argument
Anropar GREATEST()
utan några argument resulterar i ett fel:
SELECT GREATEST()
FROM DUAL;
Resultat:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
Du kan också använda LEAST()
för att returnera det minsta av en lista med ett eller flera uttryck.