samenvatting: in deze tutorial leert u hoe u de PostgreSQL CASE voorwaardelijke expressie gebruikt om voorwaardelijke queries te vormen.
de PostgreSQL CASE
expressie is hetzelfde als IF/ELSE
statement in andere programmeertalen. Hiermee kunt u if-else logica toe te voegen aan de query om een krachtige query te vormen.
omdat CASE
een expressie is, kunt u deze gebruiken op alle plaatsen waar een expressie kan worden gebruikt, bijv.,SELECT
, WHERE
, GROUP BY
, en HAVING
clausule.
de CASE
uitdrukking heeft twee vormen: algemene en eenvoudige vorm.
- 1) Algemene PostgreSQL GEVALSUITDRUKKING
- A) een algemeen voorbeeld
- B) Gebruik hoofdletters met een geaggregeerde functie voorbeeld
- 2) Simple PostgreSQL CASE expression
- a) Simple PostgreSQL CASE expression voorbeeld
- B) gebruikmakend van eenvoudige PostgreSQL-GEVALUITDRUKKING met geaggregeerde functie voorbeeld
1) Algemene PostgreSQL GEVALSUITDRUKKING
het volgende illustreert de algemene vorm van de verklaring CASE
:
Code language: SQL (Structured Query Language) (sql)
In deze syntaxis, elke voorwaarde (condition_1
, condition_2
…) is een Booleaanse uitdrukking die true
of false
geeft.
wanneer een voorwaarde evalueert tot false
, evalueert de expressie CASE
de volgende voorwaarde van boven naar beneden totdat een voorwaarde wordt gevonden die evalueert tot true
.
als een voorwaarde evalueert tot true
, geeft de expressie CASE
het corresponderende resultaat terug dat volgt op de voorwaarde. Als de condition_2
bijvoorbeeld evalueert tot true
, geeft de expressie CASE
de result_2
terug. Ook stopt het onmiddellijk met het evalueren van de volgende uitdrukking.
in het geval dat alle voorwaarden evalueren tot false
, geeft de expressie CASE
het resultaat (else_result
) terug dat volgt op het ELSE
trefwoord. Als u de ELSE
clausule weglaat, geeft de CASE
expressie NULL
terug.
laten we eens kijken naar de film
tabel uit de voorbeelddatabase.
A) een algemeen voorbeeld
stel dat u de films wilt labelen op hun lengte op basis van de volgende logica:
- als de lengte minder dan 50 minuten bedraagt, is de film kort.
- als de film langer is dan 50 minuten en minder dan of gelijk is aan 120 minuten, is de film medium.
- als de film langer is dan 120 minuten, is de film lang.
om deze logica toe te passen, kunt u de CASE
uitdrukking in het SELECT
statement als volgt gebruiken:
Code language: PHP (php)
uitvoer:
merk op dat we een kolom alias duration
na de CASE
expressie hebben geplaatst.
B) Gebruik hoofdletters met een geaggregeerde functie voorbeeld
stel dat u prijssegmenten wilt toewijzen aan films met de volgende logica:
- als de huurprijs 0,99 is, is de film economisch.
- als de huurprijs 1,99 is, is de film massa.
- als de huurprijs 4,99 is, is de film premium.
en u wilt weten hoeveel films tot economy, mass en premium behoren.
in dit geval kunt u de CASE
expressie gebruiken om de query als volgt te construeren:
Code language: SQL (Structured Query Language) (sql)
het resultaat van de query is als volgt:
in dit voorbeeld gebruikten we de CASE
uitdrukking om 1 of 0 te retourneren als de huurprijs in elk prijssegment valt. En we hebben de functie SUM
toegepast om het totaal van films voor elk prijssegment te berekenen.
2) Simple PostgreSQL CASE expression
PostgreSQL biedt een andere vorm van de CASE
expressie genaamd simple form als volgt:
Code language: SQL (Structured Query Language) (sql)
de CASE
evalueert eerst de expression
en vergelijkt het resultaat met elke waarde( value_1
, value_2
, …) in de WHEN
clausules opeenvolgend totdat het de overeenkomst vindt.
zodra het resultaat van de expression
gelijk is aan een waarde (waarde1, waarde2, enz.) in een WHEN
– clausule geeft CASE
het overeenkomstige resultaat terug in de THEN
– clausule.
als CASE
geen overeenkomsten vindt, geeft het else_result
terug in die volgt op ELSE
, of NULL
waarde als ELSE
niet beschikbaar is.
a) Simple PostgreSQL CASE expression voorbeeld
het volgende statement gebruikt de CASE
expressie om de ratingbeschrijving aan de uitvoer toe te voegen:
Code language: PHP (php)
In dit voorbeeld hebben we een eenvoudige CASE
uitdrukking gebruikt om de rating uit de film
tabel te vergelijken met enkele letterlijke waarden zoals G, PG, NC17, PG-13 en de bijbehorende ratingbeschrijving te retourneren.
B) gebruikmakend van eenvoudige PostgreSQL-GEVALUITDRUKKING met geaggregeerde functie voorbeeld
de volgende verklaring gebruikt CASE
expressie met de SUM
functie om het aantal films in elke waardering te berekenen:
Code language: PHP (php)
In deze tutorial heb je geleerd hoe je de PostgreSQL CASE
expressie gebruikt om complexe query ‘ s te vormen.
- was deze tutorial nuttig ?
- YesNo