SQL COALESCE(): come determinare valori che non sono NULL
La funzione SQL COALESCE() è usata per determinare il primo valore di una lista che non è NULL. È pertanto una versione ridotta di una relativa istruzione CASE.
Cos’è SQL COALESCE()?
In SQL la parola chiave NULL rappresenta i dati che non hanno un valore. Ad esempio, quando non si conosce (ancora) un determinato valore in una tabella e quindi non si compila il relativo campo. Non significa necessariamente che il campo non abbia un valore, ma semplicemente che non è noto. A prima vista questi valori NULL non fanno nulla di male, ma possono rendere un database poco chiaro. La funzione SQL COALESCE() è quindi utilizzata per restituire il primo valore non NULL di una lista.
- Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
- Storage SSD NVMe veloce
- Plesk Web Host Edition incluso
Sintassi e prerequisiti
La sintassi di SQL COALESCE() è piuttosto semplice. Si presenta come segue:
COALESCE(valore1, valore2, …, n)
sqlServono almeno due argomenti. Se tutti gli argomenti hanno il valore NULL, anche alla fine viene restituito NULL.
Esempio di funzionamento
Ti illustriamo il funzionamento di base ricorrendo a un semplice esempio. Nel codice seguente inseriamo diversi argomenti e li controlliamo con il comando SQL SELECT.
SELECT COALESCE(NULL, NULL, NULL, 17, 49, NULL, 13, 15, 14, 15);
sqlIn questo caso l’output è “17”, perché è il primo valore che non è NULL.
La funzione in combinazione
La funzione è molto più utile se viene eseguita in combinazione con altre azioni. Prendiamo una tabella chiamata “Collaboratori” che contiene le colonne “Nome”, “Residenza” e “Data di nascita”. Si presenta come segue:
Nome | Residenza | Data di nascita |
---|---|---|
Pietro Mancini | Napoli | 10.04.1967 |
Sabina Rossi | Napoli | 27.07.1989 |
Sebastiano Russo | Bolzano | |
Marco Innocenti | Napoli | 14.04.2001 |
Sara Verdi | 02.12.2005 |
Qui mancano due voci. Sicuramente Sebastiano Russo ha una data di nascita e Sara Verdi ha una residenza, ma al momento non conosciamo queste informazioni. Se vogliamo indicare la mancanza di questi dati possiamo usare la funzione SQL COALESCE(). Di seguito il codice:
SELECT nome,
COALESCE(residenza, 'CHIEDERE') AS residenza,
COALESCE(data di nascita, 'CHIEDERE') AS data di nascita
FROM collaboratore;
sqlL’output corrispondente si presenta come segue:
Nome | Residenza | Data di nascita |
---|---|---|
Pietro Mancini | Napoli | 10.04.1967 |
Sabina Rossi | Napoli | 27.07.1989 |
Sebastiano Russo | Bolzano | CHIEDERE |
Marco Innocenti | Napoli | 14.04.2001 |
Sara Verdi | CHIEDERE | 02.12.2005 |
Funzioni simili a SQL COALESCE()
SQL COALESCE() presenta sovrapposizioni con un’istruzione CASE ed è soltanto una versione abbreviata di questa opzione di interrogazione. Il codice CASE si presenterebbe come segue:
CASE
WHEN valore1 IS NOT NULL THEN valore1
WHEN valore2 IS NOT NULL THEN valore2
WHEN … IS NOT NULL THEN …
ELSE n
END
sqlAnche la funzione ISNULL è simile a SQL COALESCE(). A differenza della funzione trattata qui, ISNULL viene valutata solo una volta e non segue a sua volta le regole di CASE.
Un server proprio come lo vuoi tu: con l’hosting SQL Server di IONOS utilizzi MSSQL, MySQL o MariaDB e puoi contare su una consulenza personalizzata, solidi meccanismi di sicurezza e prestazioni eccezionali.