SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite-FALL

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 ] 
ENDCode 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.

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 ] 
ENDCode 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.

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

In diesem Tutorial haben Sie etwas über SQLite CASE gelernt Ausdruck, um bedingte Logik innerhalb einer SQL-Abfrage zu bilden.