Maybaygiare.org

Blog Network

Comment utiliser COALESCE dans PostgreSQL

RÉSUMÉ: Cet article passe en revue les méthodes de gestion des valeurs NULLES dans PostgreSQL à l’aide de la fonction COALESCE. Les sujets abordés avec des exemples incluent :

1. Qu’est-ce qu’une fonction de COALESCENCE ?

a. Quelques mises en garde

2. Empêcher les valeurs NULLES avec COALESCE

Dans cet article, nous allons comprendre ce qu’est la fonction COALESCE et comment l’utiliser dans PostgreSQL.

Qu’est-ce qu’une fonction de COALESCENCE ?

COALESCE est une fonction intégrée au système qui peut être considérée comme l’une des expressions conditionnelles disponibles dans PostgreSQL TM. NULLIF, GREATEST, LEAST et COALESCE sont les types d’expressions conditionnelles dans PostgreSQL Tm.

La fonction COALESCE renvoie la première expression non NULLE de la liste spécifiée. Si tous les arguments sont NULS, il retournera NULL comme sortie.

La syntaxe prise en charge est la suivante:

COALESCE(value_1,value_2,value_3,........value_n)

Les paramètres ou arguments sont:

value_1,value_2,value_3,........value_n

Mises en garde

Quelques points sur la fonction de FUSION:

  • Les paramètres sont testés pour des valeurs non nulles.
  • Les paramètres doivent tous être du même type de données. Sinon, cela entraînera une erreur.
  • La fonction COALESCE accepte un nombre illimité d’arguments.
  • Il prend les arguments de gauche à droite.
  • La fonction Coalesce fournit une compatibilité similaire à NVL et IFNULL qui sont disponibles dans d’autres SGBD.
  • CASE et COALESCE peuvent être utilisés à des fins similaires, mais l’avantage de l’utilisation de COALESCE est qu’elle nécessite beaucoup moins de frappe.
  • Il cessera d’évaluer les paramètres dès que la première valeur non NULLE est atteinte.

Exemples

1. Voici comment fonctionne COALESCE avec une valeur non NULLE pour le premier paramètre:

postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)

La fonction COALESCE trouve la première expression non NULLE au début, elle produira donc toujours le même résultat indépendamment de ce que contiennent les paramètres restants.

2. Voici comment fonctionne COALESCE lorsqu’une valeur NULLE est le premier paramètre:

postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)

La fonction COALESCE a trouvé une valeur NULLE dans le premier paramètre, elle a donc continué au deuxième paramètre, qui n’était pas NUL, de sorte que la valeur de ce paramètre a été renvoyée.

3. Voici comment il interprète plusieurs valeurs NULLES:

postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)

Il y a plusieurs valeurs nulles dans cette expression, mais comme la première valeur non NULLE a été atteinte sur le troisième paramètre, toutes les valeurs restantes ont été ignorées.

4. Si les types de données des paramètres ne correspondent pas, cela produira une erreur:

postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched

Le premier paramètre est un entier, et la fonction now() renvoie un horodatage avec un fuseau horaire. Comme ces paramètres ne sont pas du même type, la signature de la fonction n’est pas valide, et produit donc une erreur.

5. Vous pouvez utiliser d’autres fonctions comme paramètres à l’intérieur de la fonction COALESCE :

postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)

Empêchant les valeurs NULLES avec COALESCE

Une application utile de la fonction COALESCE consiste à empêcher les valeurs NULLES d’apparaître dans les résultats de la requête.

Exemple

1. Créez une table « sales » à l’aide de la commande CREATE TABLE :

postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE

2. Insérez les données dans le tableau « sales » :

postgres=# INSERT INTO sales VALUES (121,'paste',1000,10), (144,'brush',1500,20), (166,'soap',800,0), (178,'coffee',500,NULL);INSERT 0 4

3. Si nous essayons de soustraire une valeur dans la colonne « remise » d’une valeur dans la colonne « montant », la dernière ligne renverra une valeur NULLE. En effet, toute arithmétique effectuée sur une valeur NULL entraînera NULL.

postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.