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 books
que 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.