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

Fonction GREATEST() dans PostgreSQL

Dans PostgreSQL, le GREATEST() renvoie la plus grande (ou la plus grande) valeur d'une liste de n'importe quel nombre d'expressions.

Le GREATEST() La fonction n'est pas incluse dans la norme SQL, mais c'est une extension populaire prise en charge par de nombreux SGBDR majeurs.

Syntaxe

GREATEST(value [, ...])

Cela signifie que nous pouvons passer une ou plusieurs valeurs à la fonction.

Exemple

Voici un exemple simple pour illustrer :

SELECT GREATEST( 3, 15, 7 );

Résultat :

15

Chaînes

Voici un exemple où tous les arguments sont des chaînes :

SELECT GREATEST( 'Bear', 'Zebra', 'Ant' );

Résultat :

Zebra

Dates

Voici une comparaison des chaînes de date :

SELECT GREATEST(date '2027-01-01', date '2027-12-31');

Résultat :

2027-12-31

Type de données commun

Les expressions doivent toutes être convertibles en un type de données commun. Le résultat utilisera ce type.

Si les expressions ne peuvent pas être converties en un type de données commun, une erreur se produit :

SELECT GREATEST( 3, 'Fifteen', 7 );

Résultat :

ERROR:  invalid input syntax for type integer: "Fifteen"
LINE 1: SELECT GREATEST( 3, 'Fifteen', 7 );
                            ^

Valeurs nulles

Les valeurs nulles sont ignorées sauf si toutes les expressions sont null . Si toutes les expressions sont null , puis null est renvoyé :

\pset null '<null>'
SELECT 
    GREATEST( 3, null, 7 ),
    GREATEST( null, null, null );

Résultat :

 greatest | greatest 
----------+----------
        7 | <null>

Par défaut, psql renvoie la chaîne vide sur les valeurs nulles. Dans la première ligne de cet exemple, j'ai défini des valeurs nulles pour afficher <null> afin qu'il nous soit plus facile de voir le résultat nul.

Arguments manquants

Appel de GREATEST() sans aucun argument génère une erreur :

SELECT GREATEST();

Résultat :

ERROR:  syntax error at or near ")"
LINE 1: SELECT GREATEST();
                        ^

Cependant, nous pouvons passer un argument sans erreur :

SELECT GREATEST( 1 );

Résultat :

1