Samenvatting: in deze tutorial leer je over de SQLite CASE
expressie om de voorwaardelijke logica aan een query toe te voegen.
De SQLite CASE
expressie evalueert een lijst met voorwaarden en retourneert een expressie op basis van het resultaat van de evaluatie.
De CASE
uitdrukking is vergelijkbaar met de IF-THEN-ELSE
statement in andere programmeertalen.
U kunt de CASE
. gebruiken uitdrukking in een clausule of verklaring die een geldige uitdrukking accepteert. U kunt bijvoorbeeld de CASE
. gebruiken uitdrukking in clausules zoals WHERE
, ORDER BY
, HAVING
, SELECT
en uitspraken zoals SELECT
, UPDATE
, en DELETE
.
SQLite biedt twee vormen van de CASE
uitdrukking:eenvoudig CASE
en zocht CASE
.
SQLite eenvoudige CASE
uitdrukking
De eenvoudige CASE
expression vergelijkt een expressie met een lijst met expressies om het resultaat te retourneren. Het volgende illustreert de syntaxis van de eenvoudige CASE
uitdrukking.
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)
De eenvoudige CASE
expressie vergelijkt de case_expression
naar de uitdrukking verschijnt in de eerste WHEN
clausule, when_expression_1
, voor gelijkheid.
Als de case_expression
is gelijk aan when_expression_1
, de eenvoudige CASE
geeft de uitdrukking terug in de corresponderende THEN
clausule, dat is de result_1
.
Anders, de eenvoudige CASE
expressie vergelijkt de case_expression
met de uitdrukking in de volgende WHEN
clausule.
Indien geen case_expression
komt overeen met de when_expression
, de CASE
expressie geeft de result_else
in de ELSE
clausule. Als u de ELSE
. weglaat clausule, de CASE
expressie geeft NULL terug.
De eenvoudige CASE
expressie maakt gebruik van kortsluiting evaluatie. Met andere woorden, het geeft het resultaat terug en stopt met het evalueren van andere voorwaarden zodra het een overeenkomst vindt.
Eenvoudige CASE
voorbeeld
Laten we eens kijken naar de customers
tabel in de voorbeelddatabase.
Stel dat u een rapport moet maken van de klantgroepen met de logica dat als een klant zich in de VS bevindt, deze klant tot de binnenlandse groep behoort, anders behoort de klant tot de buitenlandse groep.
Om dit rapport te maken, gebruikt u de eenvoudige CASE
uitdrukking in de SELECT
verklaring als volgt:
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)
Probeer het
SQLite doorzocht CASE
uitdrukking
De gezochte CASE
expression evalueert een lijst met expressies om het resultaat te bepalen. Merk op dat de eenvoudige CASE
uitdrukking vergelijkt alleen voor gelijkheid, terwijl de gezochte CASE
expressie kan elke vorm van vergelijking gebruiken.
Het volgende illustreert de syntaxis van de gezochte CASE
uitdrukking.
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)
De gezochte CASE
expression evalueert de Booleaanse expressies in de opgegeven reeks en retourneert het bijbehorende resultaat als de expressie wordt geëvalueerd naar true.
Als geen enkele uitdrukking als waar evalueert, wordt de gezochte CASE
expressie retourneert de expressie in de ELSE
clausule indien gespecificeerd. Als u de ELSE
. weglaat clausule, de gezochte CASE
expressie retourneert NULL
.
Vergelijkbaar met de eenvoudige CASE
uitdrukking, de gezochte CASE
expressie stopt de evaluatie wanneer aan een voorwaarde is voldaan.
Gezocht CASE
voorbeeld
We gebruiken de tracks
tafel voor de demonstratie.
Stel dat u de tracks wilt classificeren op basis van de lengte, zoals minder een minuut, de track is kort; tussen 1 en 5 minuten is de track medium; langer dan 5 minuten, is de track lang.
Om dit te bereiken, gebruikt u de gezochte CASE
uitdrukking als volgt:
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)
Probeer het
In deze tutorial heb je geleerd over SQLite CASE
expressie om voorwaardelijke logica in een SQL-query te vormen.