Introduction

Lorsque vous gérez des données dans PostgreSQL, vous trouverez que les valeurs NULL peuvent être un peu délicates à gérer. Par exemple, la plupart des expressions renvoient une valeur de NULL lorsqu’un élément de l’expression est NULL. Comment pouvons-nous éviter certaines des difficultés associées aux valeurs NULL ? Dans le premier article de cette série en deux parties, nous avons expliqué comment la fonction COALESCE de PostgreSQL peut être utilisée pour tester les valeurs NULL et substituer une autre valeur à la place des NULL. Cet article reprendra là où nous nous sommes arrêtés et continuera notre discussion sur la fonction COALESCE et ses applications dans PostgreSQL.

Prérequis

Avant de tenter de suivre les exemples de cet article, assurez-vous que PostgreSQL est déjà installé sur votre machine. Vous devriez également avoir quelques connaissances de base de PostgreSQL afin de comprendre les exemples de la fonction COALESCE.

COALESCE dans l’interface de ligne de commande psql

Dans l’article précédent, nous avons expliqué comment accéder à l’interface de ligne de commande psql de PostgreSQL. Nous aurons besoin d’entrer à nouveau dans la console de ligne de commande psql pour essayer quelques exemples de COALESCE.

Débutons avec l’exemple simple présenté ci-dessous :

1
SELECT COALESCE (‘apple’ , ‘pear’ , ‘strawberry’);

La sortie de cette requête sera :

1
2
3
COALESCE
———-
pomme

Comme vous pouvez le voir, la sortie retournée est ‘pomme’ car c’est la première valeur non NULL dans la liste des arguments.

Si nous avons une valeur NULL comme premier élément de la liste, la fonction COALESCE la sautera, cherchant la première valeur qui n’est pas NULL. Nous pouvons voir comment cela fonctionne dans la requête suivante:

1
SELECT COALESCE ( NULL, ‘apple’ , ‘pear’ , ‘strawberry’);

La sortie sera :

1
2
3
4
COALESCE
———-.
pomme
(1 ROW)

Use PostgreSQL COALESCE timestamp null

Dans notre prochain exemple, nous allons essayer d’utiliser la fonction COALESCE avec le type de données timestamp.

D’abord, nous aurons besoin de créer une autre table dans PostgreSQL :

1
2
3
4
5
6
7
CREATE TABLE books(
book_id INT PRIMARY KEY NOT NULL,
book_name VARCHAR NOT NULL,
quantity INT,
price REAL,
year_released TIMESTAMP
) ;

Nous aurons également besoin d’insérer des enregistrements dans la table booksque nous venons de créer :

1
2
3
4
5
6
7
INSERT INTO books(book_name, quantity, price, year_released)
VALUES
(‘Book1’, 12, 60, ‘2015-07-21 09 :10:25+8’),
(‘Book2’, 5, 55, ‘2018-02-12 15:40 :15+8’),
(‘Livre3’, 10, 90, ‘2017-11-12 00:10:11+8’),
(‘Livre4’, 26, 47, NULL),
(‘Livre5’, 2, 83, ‘2019-03-05 03:05 :08+8’);

Notez que nous avons inséré une valeur NULL dans notre table dans la colonne year_released, dont le type de données est timestamp.

Imaginons que nous aimerions obtenir le prix total de chaque livre. Pour obtenir cette information, nous allons multiplier les valeurs de deux colonnes : quantity et price. La requête ci-dessous montre comment faire :

1
2
SELECT book_id, book_name, ( quantity * price ) AS total_price
FROM books;

La sortie de la requête ressemblera à :

1
2
3
4
5
6
7
8
id du livre | nom_du_livre | prix_total
———+———–+————-
1 | Livre1 | 720
2 | Livre2 | 275
3 | Livre3 | 900
4 | Livre4 | 1222
5 | Livre5 | 166
(5 ROWS)

Regardons le contenu de la table books avec cette requête :

1
SELECT * FROM books;

La sortie ressemblerait à ceci :

1
2
3
4
5
6
7
8
id_du_livre | nom_du_livre | quantité | prix | année_de sortie
-.——–+———–+———-+——-+———————
1 | Livre1 | 12 | 60 | 2015-07-21 09 :10:25
2 | Livre2 | 5 | 55 | 2018-02-12 15:40:15
3 | Livre3 | 10 | 90 | 2017-11-12 00:10:11
4 | Livre4 | 26 | 47 |
5 | Livre5 | 2 | 83 | 2019-03-05 03 :05:08
(5 lignes)
  • Notez qu’il y a une valeur NULL dans la dernière colonne de la quatrième ligne. Nous pouvons changer cela pour utiliser une valeur non NULL à la place en utilisant la fonction COALESCE :
1
2
SELECT book_id, book_name,
COALESCE(year_released, CURRENT_TIMESTAMP) FROM books;

Voici à quoi ressemblera la sortie :

1
2
3
4
5
6
7
8
book_id | book_name | COALESCE
———+———–+——————————-
1 | Book1 | 2015-07-21 09 :10:25-04
2 | Book2 | 2018-02-12 15:40:15-05
3 | Book3 | 2017-11-12 00:10:11-05
4 | Book4 | 2020-02-13 06:20:41.239926-05
5 | Book5 | 2019-03-05 03:05:08-05
(5 ROWS)

Conclusion

Dans cette série d’articles en deux parties, nous avons examiné en profondeur la fonction COALESCE de PostgreSQL. Nous avons montré plusieurs exemples de la façon dont cette fonction peut être utilisée pour tester les valeurs NULL dans vos données et substituer une valeur non NULL si nécessaire. En utilisant ces exemples comme guide, vous serez prêt à incorporer la fonction COALESCE dans vos propres déclarations PostgreSQL.

Laisser un commentaire

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