Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie den bedingten Ausdruck PostgreSQL CASE verwenden, um bedingte Abfragen zu bilden.
Der Ausdruck PostgreSQL CASE
ist der gleiche wie die Anweisung IF/ELSE
in anderen Programmiersprachen. Sie können der Abfrage if-Else-Logik hinzufügen, um eine leistungsstarke Abfrage zu erstellen.
Da CASE
ein Ausdruck ist, können Sie ihn an allen Stellen verwenden, an denen ein Ausdruck verwendet werden kann, z.,SELECT
, WHERE
, GROUP BY
, und HAVING
Klausel.
Der Ausdruck CASE
hat zwei Formen: allgemeine und einfache Form.
1) Allgemeiner PostgreSQL-CASE-Ausdruck
Im Folgenden wird die allgemeine Form der Anweisung CASE
veranschaulicht:
Code language: SQL (Structured Query Language) (sql)
In dieser Syntax wird jede Bedingung (condition_1
, condition_2
…) ist ein boolescher Ausdruck, der entweder true
oder false
zurückgibt.
Wenn eine Bedingung false
ergibt, wertet der Ausdruck CASE
die nächste Bedingung von oben nach unten aus, bis eine Bedingung gefunden wird, die true
ergibt.
Wenn eine Bedingung true
ergibt, gibt der Ausdruck CASE
das entsprechende Ergebnis zurück, das der Bedingung folgt. Wenn beispielsweise condition_2
true
ergibt, gibt der Ausdruck CASE
result_2
zurück. Außerdem wird die Auswertung des nächsten Ausdrucks sofort beendet.
Wenn alle Bedingungen false
ergeben, gibt der Ausdruck CASE
das Ergebnis (else_result
) zurück, das auf das Schlüsselwort ELSE
folgt. Wenn Sie die Klausel ELSE
weglassen, gibt der Ausdruck CASE
NULL
zurück.
Schauen wir uns die film
-Tabelle aus der Beispieldatenbank an.
A) Ein allgemeines Fallbeispiel
Angenommen, Sie möchten die Filme nach ihrer Länge beschriften, basierend auf der folgenden Logik:
- Wenn die Länge weniger als 50 Minuten beträgt, ist der Film kurz.
- Wenn die Länge größer als 50 Minuten und kleiner oder gleich 120 Minuten ist, ist der Film medium.
- Wenn die Länge größer als 120 Minuten ist, ist der Film lang.
Um diese Logik anzuwenden, können Sie den Ausdruck CASE
in der Anweisung SELECT
wie folgt verwenden:
Code language: PHP (php)
Ausgang:
Beachten Sie, dass wir nach dem Ausdruck CASE
einen Spaltenalias duration
platziert haben.
B) Anwendungsfall mit einer Aggregatfunktion Beispiel
Angenommen, Sie möchten Filmen Preissegmente mit der folgenden Logik zuweisen:
- Wenn der Mietpreis 0,99 beträgt, ist der Film wirtschaftlich.
- Wenn der Mietpreis 1,99 beträgt, ist der Film Masse.
- Wenn der Mietpreis 4,99 beträgt, ist der Film Premium.
Und Sie möchten die Anzahl der Filme wissen, die zu Economy, Mass und Premium gehören.
In diesem Fall können Sie den Ausdruck CASE
verwenden, um die Abfrage wie folgt zu erstellen:
Code language: SQL (Structured Query Language) (sql)
Das Ergebnis der Abfrage lautet wie folgt:
In diesem Beispiel haben wir den Ausdruck CASE
verwendet, um 1 oder 0 zurückzugeben, wenn der Mietpreis in jedes Preissegment fällt. Und wir haben die Funktion SUM
angewendet, um die Summe der Filme für jedes Preissegment zu berechnen.
2) Einfacher PostgreSQL-CASE-Ausdruck
PostgreSQL bietet eine andere Form des Ausdrucks CASE
mit dem Namen simple form wie folgt:
Code language: SQL (Structured Query Language) (sql)
Der CASE
wertet zuerst den expression
aus und vergleicht das Ergebnis mit jedem Wert( value_1
, value_2
, …) in den WHEN
-Klauseln nacheinander, bis die Übereinstimmung gefunden wird.
Sobald das Ergebnis von expression
einem Wert entspricht (Wert1, Wert2 usw.) in einer WHEN
-Klausel gibt CASE
das entsprechende Ergebnis in der THEN
-Klausel zurück.
Wenn CASE
keine Übereinstimmungen findet, gibt es den else_result
zurück, der auf den ELSE
oder NULL
Wert folgt, wenn der ELSE
nicht verfügbar ist.
A) Einfaches PostgreSQL-CASE-Ausdrucksbeispiel
Die folgende Anweisung verwendet den Ausdruck CASE
, um die Bewertungsbeschreibung zur Ausgabe hinzuzufügen:
Code language: PHP (php)
In diesem Beispiel haben wir einen einfachen CASE
-Ausdruck verwendet, um die Bewertung aus der film
-Tabelle mit einigen Literalwerten wie G, PG, NC17, PG-13 zu vergleichen und die entsprechende Bewertungsbeschreibung zurückzugeben.
B) Verwenden eines einfachen PostgreSQL-CASE-Ausdrucks mit Aggregatfunktion Beispiel
Die folgende Anweisung verwendet den Ausdruck CASE
mit der Funktion SUM
, um die Anzahl der Filme in jeder Bewertung zu berechnen:
Code language: PHP (php)
In diesem Tutorial haben Sie gelernt, wie Sie den Ausdruck PostgreSQL CASE
verwenden, um komplexe Abfragen zu erstellen.
- War dieses Tutorial hilfreich ?
- JaNein