SQLite
 sql >> Database >  >> RDS >> SQLite

CASO SQLite

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 ] 
ENDCode 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 ] 
ENDCode 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.