La funzione SQL COALESCE() è usata per de­ter­mi­na­re il primo valore di una lista che non è NULL. È pertanto una versione ridotta di una relativa istru­zio­ne CASE.

Cos’è SQL COALESCE()?

In SQL la parola chiave NULL rap­pre­sen­ta i dati che non hanno un valore. Ad esempio, quando non si conosce (ancora) un de­ter­mi­na­to valore in una tabella e quindi non si compila il relativo campo. Non significa ne­ces­sa­ria­men­te che il campo non abbia un valore, ma sem­pli­ce­men­te 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 uti­liz­za­ta per re­sti­tui­re il primo valore non NULL di una lista.

Server virtuali (VPS)
Affidati ai VPS e server di IONOS, il tuo partner digitale cer­ti­fi­ca­to ISO
  • 1 Gbps di larghezza di banda e traffico il­li­mi­ta­to
  • Di­spo­ni­bi­li­tà del 99,99% e cer­ti­fi­ca­zio­ne ISO
  • As­si­sten­za 24/7 e con­su­len­te personale

Sintassi e pre­re­qui­si­ti

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 re­sti­tui­to NULL.

Esempio di fun­zio­na­men­to

Ti il­lu­stria­mo il fun­zio­na­men­to di base ri­cor­ren­do a un semplice esempio. Nel codice seguente inseriamo diversi argomenti e li con­trol­lia­mo 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 com­bi­na­zio­ne

La funzione è molto più utile se viene eseguita in com­bi­na­zio­ne con altre azioni. Prendiamo una tabella chiamata “Col­la­bo­ra­to­ri” 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
Se­ba­stia­no Russo Bolzano
Marco Innocenti Napoli 14.04.2001
Sara Verdi 02.12.2005

Qui mancano due voci. Si­cu­ra­men­te Se­ba­stia­no Russo ha una data di nascita e Sara Verdi ha una residenza, ma al momento non co­no­scia­mo queste in­for­ma­zio­ni. 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 cor­ri­spon­den­te si presenta come segue:

Nome Residenza Data di nascita
Pietro Mancini Napoli 10.04.1967
Sabina Rossi Napoli 27.07.1989
Se­ba­stia­no Russo Bolzano CHIEDERE
Marco Innocenti Napoli 14.04.2001
Sara Verdi CHIEDERE 02.12.2005

Funzioni simili a SQL COALESCE()

SQL COALESCE() presenta so­vrap­po­si­zio­ni con un’istru­zio­ne CASE ed è soltanto una versione ab­bre­via­ta di questa opzione di in­ter­ro­ga­zio­ne. Il codice CASE si pre­sen­te­reb­be 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 dif­fe­ren­za 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 con­su­len­za per­so­na­liz­za­ta, solidi mec­ca­ni­smi di sicurezza e pre­sta­zio­ni ec­ce­zio­na­li.

Vai al menu prin­ci­pa­le