sammanfattning: i den här handledningen lär du dig hur du använder PostgreSQL CASE conditional expression för att skapa villkorliga frågor.
PostgreSQL CASE
uttrycket är detsamma som IF/ELSE
uttalande i andra programmeringsspråk. Det låter dig lägga till If-else-logik i frågan för att bilda en kraftfull fråga.
eftersom CASE
är ett uttryck kan du använda det på alla platser där ett uttryck kan användas t. ex.,SELECT
, WHERE
, GROUP BY
, och HAVING
klausul.
uttrycket CASE
har två former: allmän och enkel form.
1) Allmänt PostgreSQL-FALLUTTRYCK
följande illustrerar den allmänna formen av CASE
– uttalandet:
Code language: SQL (Structured Query Language) (sql)
i denna syntax, varje villkor (condition_1
, condition_2
…) är ett booleskt uttryck som returnerar antingen true
eller false
.
när ett villkor utvärderas till false
, utvärderar uttrycket CASE
nästa villkor uppifrån och ned tills det hittar ett villkor som utvärderas till true
.
om ett villkor utvärderas till true
returnerar uttrycket CASE
motsvarande resultat som följer villkoret. Om till exempel condition_2
utvärderas till true
returnerar uttrycket CASE
result_2
. Det slutar också omedelbart utvärdera nästa uttryck.
om alla villkor utvärderas till false
returnerar uttrycket CASE
resultatet (else_result
) som följer nyckelordet ELSE
. Om du utelämnar ELSE
– satsen returnerar uttrycket CASE
NULL
.
Låt oss ta en titt på tabellen film
från exempeldatabasen.
A) ett allmänt fallexempel
Antag att du vill märka filmerna efter deras längd baserat på följande logik:
- om längden är mindre än 50 minuter är filmen kort.
- om längden är större än 50 minuter och mindre än eller lika med 120 minuter är filmen medium.
- om längden är större än 120 minuter är filmen lång.
för att tillämpa denna logik kan du använda CASE
– uttrycket i SELECT
– satsen enligt följande:
Code language: PHP (php)
utgång:
Observera att vi placerade ett kolumnalias duration
efter uttrycket CASE
.
B) använda CASE med ett aggregatfunktionsexempel
Antag att du vill tilldela prissegment till filmer med följande logik:
- om hyran är 0,99 är filmen ekonomisk.
- om hyran är 1,99 är filmen massa.
- om hyran är 4,99 är filmen premium.
och du vill veta antalet filmer som tillhör ekonomi, massa och premium.
i det här fallet kan du använda uttrycket CASE
för att konstruera frågan enligt följande:
Code language: SQL (Structured Query Language) (sql)
resultatet av frågan är som följer:
i det här exemplet använde vi uttrycket CASE
för att returnera 1 eller 0 om hyran faller i varje prissegment. Och vi använde funktionen SUM
för att beräkna summan av filmer för varje prissegment.
2) Enkelt PostgreSQL-FALLUTTRYCK
PostgreSQL tillhandahåller en annan form av uttrycket CASE
som kallas enkel form enligt följande:
Code language: SQL (Structured Query Language) (sql)
CASE
utvärderar först expression
och jämför resultatet med varje värde( value_1
, value_2
, …) i WHEN
klausuler sekventiellt tills den hittar matchen.
när resultatet av expression
är lika med ett värde (value1, value2, etc.) i en WHEN
– sats returnerar CASE
motsvarande resultat i THEN
– satsen.
om CASE
inte hittar några matchningar returnerar den else_result
i som följer värdet ELSE
eller NULL
om ELSE
inte är tillgängligt.
A) enkelt PostgreSQL-FALLUTTRYCKSEXEMPEL
följande uttalande använder uttrycket CASE
för att lägga till betygsbeskrivningen i utmatningen:
Code language: PHP (php)
i det här exemplet använde vi ett enkelt CASE
-uttryck för att jämföra betyget från film
– tabellen med några bokstavliga värden som G, PG, NC17, PG-13 och returnera motsvarande betygsbeskrivning.
B) använda enkelt PostgreSQL-FALLUTTRYCK med aggregatfunktionsexempel
följande uttalande använder CASE
uttryck med funktionen SUM
för att beräkna antalet filmer i varje betyg:
Code language: PHP (php)
i den här handledningen har du lärt dig hur du använder PostgreSQL CASE
– uttrycket för att bilda komplexa frågor.
- var denna handledning till hjälp ?
- ja nej