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.
- 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;
sqlCon 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;
sqlEsempio 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;
sqlL’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);
sqlL’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 |
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!