Introduction

Wenn Sie Daten in PostgreSQL verwalten, werden Sie feststellen, dass NULL-Werte etwas schwierig zu handhaben sein können. Zum Beispiel geben die meisten Ausdrücke den Wert NULL zurück, wenn irgendein Element des Ausdrucks NULL ist. Wie kann man einige der mit NULL-Werten verbundenen Schwierigkeiten vermeiden? Im ersten Artikel dieser zweiteiligen Serie haben wir erklärt, wie die PostgreSQL-Funktion COALESCE verwendet werden kann, um auf NULL-Werte zu testen und einen anderen Wert anstelle der NULLs zu ersetzen. Dieser Artikel knüpft da an, wo wir aufgehört haben und setzt die Diskussion über die Funktion COALESCE und ihre Anwendungen in PostgreSQL fort.

Voraussetzungen

Bevor Sie versuchen, den Beispielen in diesem Artikel zu folgen, sollten Sie sicherstellen, dass PostgreSQL bereits auf Ihrem Rechner installiert ist. Außerdem sollten Sie über einige einführende Kenntnisse von PostgreSQL verfügen, um die Beispiele der COALESCE-Funktion zu verstehen.

COALESCE in der psql-Befehlszeilenschnittstelle

Im vorherigen Artikel haben wir erklärt, wie man auf die psqlBefehlszeilenschnittstelle für PostgreSQL zugreift. Wir müssen die psql Kommandozeilenkonsole erneut aufrufen, um einige COALESCE-Beispiele auszuprobieren.

Beginnen wir mit dem unten gezeigten einfachen Beispiel:

1
SELECT COALESCE ( ‚Apfel‘ , ‚Birne‘ , ‚Erdbeere‘);

Die Ausgabe dieser Abfrage wird sein:

1
2
3
COALESCE
———-
Apfel

Wie Sie sehen, ist die zurückgegebene Ausgabe ‚Apfel‘, da es der erste Nicht-NULL-Wert in der Argumentliste ist.

Wenn wir einen NULL-Wert als erstes Element in der Liste haben, überspringt die Funktion COALESCE diesen und sucht nach dem ersten Wert, der nicht NULL ist. Wir können sehen, wie dies in der folgenden Abfrage funktioniert:

1
SELECT COALESCE ( NULL, ‚Apfel‘ , ‚Birne‘ , ‚Erdbeere‘);

Die Ausgabe wird sein:

1
2
3
4
KOALESZIEREN
———-
Apple
(1 ROW)

Use PostgreSQL COALESCE timestamp null

In unserem nächsten Beispiel, werden wir versuchen, die Funktion COALESCE mit dem Datentyp timestamp zu verwenden.

Zunächst müssen wir eine weitere Tabelle in PostgreSQL erstellen:

1
2
3
4
5
6
7
CREATE TABLE books(
book_id INT PRIMARY KEY NOT NULL,
Buch_name VARCHAR NOT NULL,
Menge INT,
Preis REAL,
Jahr_Veröffentlichung TIMESTAMP
);

Wir müssen auch Datensätze in die books Tabelle einfügen, die wir gerade erstellt haben:

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‘),
(‚Buch2‘, 5, 55, ‚2018-02-12 15:40:15+8‘),
(‚Buch3‘, 10, 90, ‚2017-11-12 00:10:11+8‘),
(‚Buch4‘, 26, 47, NULL),
(‚Buch5‘, 2, 83, ‚2019-03-05 03:05:08+8‘);

Beachten Sie, dass wir einen NULL-Wert in unsere Tabelle in der Spalte year_released eingefügt haben, die einen Datentyp von timestamp hat.

Stellen wir uns vor, wir möchten den Gesamtpreis für jedes Buch ermitteln. Um diese Information zu erhalten, multiplizieren wir die Werte von zwei Spalten: quantity und price. Die folgende Abfrage zeigt, wie das geht:

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

Die Ausgabe der Abfrage wird wie folgt aussehen:

1
2
3
4
5
6
7
8
Buch_id | book_name | total_price
———+———–+————-
1 | Buch1 | 720
2 | Buch2 | 275
3 | Buch3 | 900
4 | Buch4 | 1222
5 | Buch5 | 166
(5 ZEILEN)

Sehen wir uns den Inhalt der Tabelle books mit dieser Abfrage an:

1
SELECT * FROM books;

Die Ausgabe würde wie folgt aussehen:

1
2
3
4
5
6
7
8
Buch_id | book_name | quantity | price | year_released
———+———–+———-+——-+———————
1 | Buch1 | 12 | 60 | 2015-07-21 09:10:25
2 | Book2 | 5 | 55 | 2018-02-12 15:40:15
3 | Book3 | 10 | 90 | 2017-11-12 00:10:11
4 | Book4 | 26 | 47 |
5 | Book5 | 2 | 83 | 2019-03-05 03:05:08
(5 Zeilen)
  • Beachten Sie, dass es einen NULL-Wert in der letzten Spalte der vierten Zeile gibt. Wir können dies ändern, um stattdessen einen Nicht-NULL-Wert zu verwenden, indem wir die Funktion COALESCE verwenden:
1
2
SELECT book_id, book_name,
COALESCE(year_released, CURRENT_TIMESTAMP) FROM books;

So wird die Ausgabe aussehen:

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)

Abschluss

In dieser zweiteiligen Artikelserie haben wir einen ausführlichen Blick auf die PostgreSQL-Funktion COALESCE geworfen. Wir haben mehrere Beispiele gezeigt, wie diese Funktion verwendet werden kann, um auf NULL-Werte in Ihren Daten zu testen und bei Bedarf einen Nicht-NULL-Wert zu ersetzen. Anhand dieser Beispiele können Sie die Funktion COALESCE in Ihre eigenen PostgreSQL-Anweisungen einbauen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.