Riepilogo: in questo tutorial imparerai a conoscere il CASE
di SQLite espressione per aggiungere la logica condizionale a una query.
Il CASE
di SQLite espressione valuta un elenco di condizioni e restituisce un'espressione basata sul risultato della valutazione.
Il CASE
l'espressione è simile a IF-THEN-ELSE
istruzione in altri linguaggi di programmazione.
Puoi usare il CASE
espressione in qualsiasi clausola o istruzione che accetta un'espressione valida. Ad esempio, puoi utilizzare il CASE
espressione in clausole come WHERE
, ORDER BY
, HAVING
, SELECT
e istruzioni come SELECT
, UPDATE
e DELETE
.
SQLite fornisce due forme di CASE
espressione:semplice CASE
e cercato CASE
.
SQLite semplice CASE
espressione
Il semplice CASE
expression confronta un'espressione con un elenco di espressioni per restituire il risultato. Quanto segue illustra la sintassi del semplice CASE
espressione.
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)
Il semplice CASE
expression confronta case_expression
all'espressione compare nel primo WHEN
clausola, when_expression_1
, per l'uguaglianza.
Se il case_expression
è uguale a when_expression_1
, il semplice CASE
restituisce l'espressione nel corrispondente THEN
clausola, che è il result_1
.
Altrimenti, il semplice CASE
expression confronta case_expression
con l'espressione nel prossimo WHEN
clausola.
In caso non case_expression
corrisponde a when_expression
, il CASE
espressione restituisce il result_else
nel ELSE
clausola. Se ometti ELSE
clausola, il CASE
l'espressione restituisce NULL.
Il semplice CASE
l'espressione utilizza la valutazione di cortocircuito. In altre parole, restituisce il risultato e interrompe la valutazione di altre condizioni non appena trova una corrispondenza.
Semplice CASE
esempio
Diamo un'occhiata ai customers
tabella nel database di esempio.
Supponiamo di dover fare un report dei gruppi di clienti con la logica che se un cliente si trova negli USA, questo cliente appartiene al gruppo nazionale, altrimenti il cliente appartiene al gruppo estero.
Per fare questo rapporto, utilizzi il semplice CASE
espressione nel SELECT
dichiarazione come segue:
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)
Provalo
SQLite ha cercato CASE
espressione
Il CASE
cercato expression valuta un elenco di espressioni per decidere il risultato. Nota che il semplice CASE
l'espressione confronta solo per l'uguaglianza, mentre il CASE
cercato l'espressione può utilizzare qualsiasi forma di confronto.
Di seguito viene illustrata la sintassi del CASE
cercato espressione.
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)
Il CASE
cercato espressione valuta le espressioni booleane nella sequenza specificata e restituisce il risultato corrispondente se l'espressione restituisce true.
Nel caso in cui nessuna espressione restituisca true, il CASE
cercato espressione restituisce l'espressione in ELSE
clausola se specificata. Se ometti ELSE
clausola, il CASE
cercato l'espressione restituisce NULL
.
Simile al semplice CASE
espressione, il CASE
cercato espressione interrompe la valutazione quando viene soddisfatta una condizione.
Cercato CASE
esempio
Useremo le tracks
tavolo per la dimostrazione.
Supponiamo di voler classificare le tracce in base alla loro lunghezza, ad esempio meno di un minuto, la traccia è breve; tra 1 e 5 minuti, la pista è media; maggiore di 5 minuti, la traccia è lunga.
Per ottenere ciò, utilizza il CASE
cercato espressione come segue:
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)
Provalo
In questo tutorial, hai imparato a conoscere SQLite CASE
espressione per formare la logica condizionale all'interno di una query SQL.