PostgreSQL CASE

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

Lämna ett svar

Din e-postadress kommer inte publiceras.