Zusammenfassung: In diesem Tutorial lernen Sie den SQLite CASE
kennen Ausdruck zum Hinzufügen der bedingten Logik zu einer Abfrage.
Der SQLite CASE
expression wertet eine Liste von Bedingungen aus und gibt einen Ausdruck basierend auf dem Ergebnis der Auswertung zurück.
Der CASE
Ausdruck ähnelt dem IF-THEN-ELSE
Anweisung in anderen Programmiersprachen.
Sie können den CASE
verwenden Ausdruck in jeder Klausel oder Anweisung, die einen gültigen Ausdruck akzeptiert. Sie können zum Beispiel den CASE
verwenden Ausdruck in Klauseln wie WHERE
, ORDER BY
, HAVING
, SELECT
und Anweisungen wie SELECT
, UPDATE
, und DELETE
.
SQLite bietet zwei Formen des CASE
Ausdruck:einfaches CASE
und suchte nach CASE
.
SQLite einfacher CASE
Ausdruck
Der einfache CASE
Ausdruck vergleicht einen Ausdruck mit einer Liste von Ausdrücken, um das Ergebnis zurückzugeben. Im Folgenden wird die Syntax des einfachen CASE
veranschaulicht Ausdruck.
CASE case_expression
WHEN when_expression_1 THEN result_1
WHEN when_expression_2 THEN result_2
...
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
Der einfache CASE
expression vergleicht den case_expression
zum Ausdruck erscheint im ersten WHEN
Klausel, when_expression_1
, für Gleichheit.
Wenn der case_expression
gleich when_expression_1
, der einfache CASE
gibt den Ausdruck im entsprechenden THEN
zurück -Klausel, die result_1
ist .
Ansonsten der einfache CASE
expression vergleicht den case_expression
mit dem Ausdruck im nächsten WHEN
Klausel.
Falls kein case_expression
entspricht dem when_expression
, der CASE
expression gibt result_else
zurück im ELSE
Klausel. Wenn Sie ELSE
weglassen -Klausel, die CASE
Ausdruck gibt NULL zurück.
Der einfache CASE
Ausdruck verwendet Kurzschlussauswertung. Mit anderen Worten, es gibt das Ergebnis zurück und stoppt die Auswertung anderer Bedingungen, sobald es eine Übereinstimmung findet.
Einfacher CASE
Beispiel
Werfen wir einen Blick auf die customers
Tabelle in der Beispieldatenbank.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314220361.png)
Angenommen, Sie müssen einen Bericht über die Kundengruppen mit der Logik erstellen, dass, wenn sich ein Kunde in den USA befindet, dieser Kunde zur inländischen Gruppe gehört, andernfalls gehört der Kunde zur ausländischen Gruppe.
Um diesen Bericht zu erstellen, verwenden Sie den einfachen CASE
Ausdruck im SELECT
Anweisung wie folgt:
SELECT customerid,
firstname,
lastname,
CASE country
WHEN 'USA'
THEN 'Domestic'
ELSE 'Foreign'
END CustomerGroup
FROM
customers
ORDER BY
LastName,
FirstName;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
SQLite hat CASE
gesucht Ausdruck
Der gesuchte CASE
expression wertet eine Liste von Ausdrücken aus, um das Ergebnis festzulegen. Beachten Sie, dass das einfache CASE
Ausdruck vergleicht nur auf Gleichheit, während der gesuchte CASE
Ausdruck kann jede Art von Vergleich verwenden.
Im Folgenden wird die Syntax des gesuchten CASE
veranschaulicht Ausdruck.
CASE
WHEN bool_expression_1 THEN result_1
WHEN bool_expression_2 THEN result_2
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
Der gesuchte CASE
expression wertet die booleschen Ausdrücke in der angegebenen Reihenfolge aus und gibt das entsprechende Ergebnis zurück, wenn der Ausdruck wahr ist.
Falls kein Ausdruck zu wahr ausgewertet wird, der gesuchte CASE
Ausdruck gibt den Ausdruck in ELSE
zurück Klausel, falls angegeben. Wenn Sie ELSE
weglassen -Klausel, der gesuchte CASE
Ausdruck gibt NULL
zurück .
Ähnlich dem einfachen CASE
Ausdruck, der gesuchte CASE
Ausdruck stoppt die Auswertung, wenn eine Bedingung erfüllt ist.
CASE
gesucht Beispiel
Wir werden die tracks
verwenden Tisch für die Demonstration.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314220336.png)
Angenommen, Sie möchten die Tracks nach ihrer Länge klassifizieren, z. B. weniger als eine Minute, der Track ist kurz; zwischen 1 und 5 Minuten, die Strecke ist mittel; Länger als 5 Minuten ist der Titel lang.
Dazu verwenden Sie den gesuchten CASE
Ausdruck wie folgt:
SELECT
trackid,
name,
CASE
WHEN milliseconds < 60000 THEN
'short'
WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
ELSE
'long'
END category
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314220349.png)
In diesem Tutorial haben Sie etwas über SQLite CASE
gelernt Ausdruck, um bedingte Logik innerhalb einer SQL-Abfrage zu bilden.