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.

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 prerequisiti

La sintassi di SQL COALESCE() è piuttosto semplice. Si presenta come segue:

COALESCE(valore1, valore2, …, n)
sql

Servono 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);
sql

In 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;
sql

L’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
sql

Anche 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.

Consiglio

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.

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