Sommario: in questo tutorial, imparerai come usare l’espressione condizionale del CASO PostgreSQL per formare query condizionali.
L’espressione PostgreSQL CASE
è la stessa dell’istruzione IF/ELSE
in altri linguaggi di programmazione. Consente di aggiungere la logica if-else alla query per formare una query potente.
Poiché CASE
è un’espressione, puoi usarla in qualsiasi punto in cui un’espressione può essere utilizzata, ad esempio,SELECT
, WHERE
, GROUP BY
, e HAVING
clausola.
L’espressione CASE
ha due forme: forma generale e semplice.
- 1) Espressione generale del CASO PostgreSQL
- A) Un esempio di CASO generale
- B) Utilizzo del CASO con un esempio di funzione aggregata
- 2) Simple PostgreSQL CASE expression
- A) Simple PostgreSQL CASE expression example
- B) Utilizzo di una semplice espressione di CASO PostgreSQL con funzione aggregata esempio
1) Espressione generale del CASO PostgreSQL
Quanto segue illustra la forma generale dell’istruzione CASE
:
Code language: SQL (Structured Query Language) (sql)
In questa sintassi, ogni condizione (condition_1
, condition_2
…) è un’espressione booleana che restituisce true
o false
.
Quando una condizione viene valutata a false
, l’espressione CASE
valuta la condizione successiva dall’alto verso il basso fino a quando non trova una condizione che valuta a true
.
Se una condizione viene valutata a true
, l’espressione CASE
restituisce il risultato corrispondente che segue la condizione. Ad esempio, se condition_2
restituisce true
, l’espressione CASE
restituisce result_2
. Inoltre, interrompe immediatamente la valutazione dell’espressione successiva.
Nel caso in cui tutte le condizioni valutino false
, l’espressione CASE
restituisce il risultato (else_result
) che segue la parola chiave ELSE
. Se si omette la clausola ELSE
, l’espressione CASE
restituisce NULL
.
Diamo un’occhiata alla tabella film
dal database di esempio.
A) Un esempio di CASO generale
Supponiamo di voler etichettare i film in base alla loro lunghezza in base alla seguente logica:
- Se la durata è inferiore a 50 minuti, il film è breve.
- Se la lunghezza è maggiore di 50 minuti e inferiore o uguale a 120 minuti, il film è medio.
- Se la lunghezza è maggiore di 120 minuti, il film è lungo.
Per applicare questa logica, è possibile utilizzare l’espressione CASE
nell’istruzione SELECT
come segue:
Code language: PHP (php)
Uscita:
Si noti che abbiamo inserito un alias di colonna duration
dopo l’espressione CASE
.
B) Utilizzo del CASO con un esempio di funzione aggregata
Supponiamo di voler assegnare segmenti di prezzo ai film con la seguente logica:
- Se il tasso di noleggio è 0,99, il film è economico.
- Se il tasso di noleggio è 1,99, il film è di massa.
- Se il tasso di noleggio è 4.99, il film è premium.
E vuoi conoscere il numero di film che appartengono a economy, mass e premium.
In questo caso, è possibile utilizzare l’espressione CASE
per costruire la query come segue:
Code language: SQL (Structured Query Language) (sql)
Il risultato della query è il seguente:
In questo esempio, abbiamo utilizzato l’espressione CASE
per restituire 1 o 0 se il tasso di noleggio rientra in ciascun segmento di prezzo. E abbiamo applicato la funzione SUM
per calcolare il totale dei film per ogni segmento di prezzo.
2) Simple PostgreSQL CASE expression
PostgreSQL fornisce un’altra forma dell’espressione CASE
chiamata simple form come segue:
Code language: SQL (Structured Query Language) (sql)
Il CASE
prima valuta il expression
e confronta il risultato con ogni valore( value_1
, value_2
, …) nelle clausole WHEN
in sequenza fino a quando non trova la corrispondenza.
Una volta che il risultato di expression
è uguale a un valore (value1, value2, ecc.) in una clausola WHEN
, CASE
restituisce il risultato corrispondente nella clausola THEN
.
Se CASE
non trova alcuna corrispondenza, restituisce il valore else_result
che segue il valore ELSE
o NULL
se ELSE
non è disponibile.
A) Simple PostgreSQL CASE expression example
La seguente istruzione utilizza l’espressione CASE
per aggiungere la descrizione della valutazione all’output:
Code language: PHP (php)
In questo esempio, abbiamo usato una semplice espressione CASE
per confrontare la valutazione dalla tabella film
con alcuni valori letterali come G, PG, NC17, PG-13 e restituire la corrispondente descrizione della valutazione.
B) Utilizzo di una semplice espressione di CASO PostgreSQL con funzione aggregata esempio
La seguente istruzione utilizza l’espressione CASE
con la funzione SUM
per calcolare il numero di film in ciascuna valutazione:
Code language: PHP (php)
In questo tutorial, hai imparato come usare l’espressione PostgreSQL CASE
per formare query complesse.
- Questo tutorial è stato utile ?
- SÌNO