SQL CASE: creare e interrogare condizioni

SQL CASE ti permette di manipolare un database interrogando determinate condizioni e visualizzando i risultati. La condizione CASE ha quindi un approccio simile all’istruzione If-then-else.

Cos’è SQL CASE?

In molti linguaggi di database e linguaggi di programmazione si usa ampiamente l’istruzione If-then-else, che esegue un’azione finché un determinato requisito è soddisfatto. Quando non lo è più, il programma chiude il ciclo o esegue un’altra azione. Lo Structured Query Language si basa su un principio analogo, mettendo a disposizione SQL CASE. Questa istruzione esegue una lista di condizioni e, se una condizione è soddisfatta, risponde con un determinato valore. Se non viene soddisfatta nessuna condizione, risponde con un valore definito sotto ELSE. Se non è presente una limitazione ELSE e le condizioni non sono soddisfatte, restituisce NULL.

Server virtuali (VPS)
Virtualizzazione totale con accesso root completo
  • Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
  • Storage SSD NVMe veloce
  • Plesk Web Host Edition incluso

Sintassi e funzionamento

La sintassi di base di SQL CASE si presenta come segue:

SELECT colonna1, colonna2, …,
CASE
	WHEN condizione1 THEN risultato1
END AS nome
FROM nome_della_tabella;
sql

Con il comando SQL SELECT indichi le colonne da considerare. Con CASE controlli la condizione. Se è soddisfatta (ovvero è true), viene riprodotto il valore del risultato. END AS chiude il ciclo. FROM indica in quale tabella deve essere eseguito questo ciclo.

Con la limitazione ELSE opzionale, la sintassi si presenta come segue:

SELECT colonna1, colonna2, …,
CASE
	WHEN condizione1 THEN risultato1
	ELSE altro_risultato
END AS nome
FROM nome_della_tabella;
sql

Esempio di condizione

Per illustrare il funzionamento di SQL CASE creiamo una tabella semplice chiamata “Lista clienti”. Qui indichiamo un numero cliente, il nome del cliente, la sua località, la data dell’ordine, il numero di articoli ordinati e l’importo pagato in euro.

Numero cliente Nome Località Data Articolo Importo totale
1427 Russo Roma 1/13/2024 14 634
1377 Rossi Milano 1/19/2024 9 220
1212 Bianchi Milano 1/3/2024 15 400
1431 Mancini Palermo 1/19/2024 22 912
1118 Innocenti Firenze 2/1/2024 10 312

Ora usiamo la condizione per elaborare la lista. Per gli importi totali superiori a 400 euro deve essere restituito un determinato testo. Lo stesso vale per gli importi sotto 400 euro. Usiamo la limitazione ELSE per gli ordini di importo pari esattamente a 400 euro. Come vedi, puoi anche interrogare più condizioni in successione. Di seguito la sintassi del nostro esempio:

SELECT numero cliente, nome, località, data, articolo, importo totale
CASE
	WHEN importo totale > 400 THEN 'Il valore d'acquisto è superiore a 400 euro'
	WHEN importo totale < 400 THEN 'Il valore d'acquisto è inferiore a 400 euro'
	ELSE 'Il valore d'acquisto è di esattamente 400 euro'
END AS dettagli ordine
FROM lista clienti;
sql

L’output si presenterà come segue:

Numero cliente Nome Località Data Articoli Importo totale Dettagli ordine
1427 Russo Roma 1/13/2024 14 634 Il valore d’acquisto è superiore a 400 euro
1377 Rossi Milano 1/19/2024 9 220 Il valore d’acquisto è inferiore a 400 euro
1212 Bianchi Milano 1/3/2024 15 400 Il valore d’acquisto è di esattamente 400 euro
1431 Mancini Palermo 1/19/2024 22 912 Il valore d’acquisto è superiore a 400 euro
1118 Innocenti Firenze 2/1/2024 10 312 Il valore d’acquisto è inferiore a 400 euro

Combinazione con altre istruzioni

Puoi interrogare le condizioni anche all’interno di altre istruzioni. Di seguito ordiniamo le voci per numero cliente. Se non è indicato (ovvero è NULL), al suo posto deve essere considerato il nome del cliente. Qui il relativo codice:

SELECT numero cliente, nome, località, data, articolo, importo totale
FROM lista clienti
ORDER BY
(CASE
		WHEN numero cliente IS NULL THEN nome
		ELSE numero cliente
END);
sql

L’output è il seguente:

Numero cliente Nome Località Data Articolo Importo totale
1118 Innocenti Firenze 2/1/2024 10 312
1212 Bianchi Milano 1/3/2024 15 400
1377 Rossi Milano 1/19/2024 9 220
1427 Russo Roma 1/13/2024 14 634
1431 Mancini Palermo 1/19/2024 22 912
Consiglio

Con l’hosting SQL Server di IONOS puoi scegliere tra MSSQL, MySQL o MariaDB. Potrai contare su prestazioni straordinarie, una solida architettura di sicurezza e una consulenza personalizzata!

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top