Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction GREATEST() dans Oracle

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 chaque expr après que le premier est implicitement converti dans le type de données du premier expr 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.