Dans Oracle Database, le GREATEST()
La fonction renvoie la plus grande d'une liste d'une ou plusieurs expressions.
Syntaxe
La syntaxe ressemble à ceci :
GREATEST(expr [, expr ]...)
La première expr
est utilisé pour déterminer le type de retour :
- Si le premier
expr
est numérique, alors Oracle détermine l'argument avec la priorité numérique la plus élevée, convertit implicitement les arguments restants en ce type de données avant la comparaison et renvoie ce type de données. - Si le premier
expr
n'est pas numérique, puis chaqueexpr
après que le premier est implicitement converti dans le type de données du premierexpr
avant la comparaison.
Exemple
Voici un exemple :
SELECT GREATEST('a', 'b', 'c')
FROM DUAL;
Résultat :
c
En voici d'autres :
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;
Résultat :
r1 r2 r3 r4 r5 _____ ______ _____ _____ ______ a Dot 3 3 Cat
Expressions
Les arguments peuvent inclure des expressions telles que :
SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;
Résultat :
6
Dates
Voici une comparaison des chaînes de date :
SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;
Résultat :
01-JAN-21
La date est renvoyée dans le format de date de la session en cours. Voir Comment vérifier le format de date de la session en cours.
Valeurs nulles
Si un argument est null
, le résultat est null
:
SET NULL 'null';
SELECT
GREATEST(null, 2),
GREATEST(1, null)
FROM DUAL;
Résultat :
GREATEST(NULL,2) GREATEST(1,NULL) ___________________ ___________________ null null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois qu'une valeur nulle se produit à la suite d'un SQL SELECT
déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Nombre d'arguments non valides
Appel de GREATEST()
sans aucun argument génère une erreur :
SELECT GREATEST()
FROM DUAL;
Résultat :
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
Vous pouvez également utiliser LEAST()
pour renvoyer la plus petite d'une liste d'une ou plusieurs expressions.