Vai al contenuto principale

Come usare la funzione COALESCE() in SQL (con esempi)

Scopri come usare la funzione SQL COALESCE() per gestire i valori null, combinare colonne e ripulire i dati con esempi e consigli reali.
Aggiornato 3 giu 2026  · 5 min leggi

Quando lavori con dati reali, i valori mancanti sono quasi inevitabili. Che tu stia ripulendo dataset o unendo colonne, SQL offre una soluzione semplice ma potente: la funzione COALESCE(). Questo tutorial ti mostra come funziona COALESCE(), quando usarla e come applicarla con esempi pratici—il tutto in poche righe di SQL.

Che cos’è COALESCE() in SQL?

La funzione COALESCE() in SQL restituisce il primo valore non null da un elenco di espressioni. Se tutti i valori sono null, restituisce null. È comunemente usata per gestire valori mancanti o combinare più colonne in un unico output di fallback.

Quando dovresti usare COALESCE()?

Questa funzione è utile quando si combinano i valori di più colonne in una sola.

Per esempio, una tabella chiamata users contiene i valori di work_email e personal_email degli utenti.

Usando la funzione COALESCE(), possiamo creare una colonna chiamata email che mostra il work_email dell’utente se non è null. Altrimenti, mostra personal_email.

user_id

work_email

personal_email

COALESCE() di

work_email e

personal_email

1

angel@datacamp.com

null

angel@datacamp.com

2

null

bruce@gmail.com

bruce@gmail.com

3

cath@datacamp.com

cath@gmail.com

cath@datacamp.com

Sintassi di COALESCE()

COALESCE(value_1, value_2, ...., value_n)

La funzione COALESCE() accetta almeno un valore (value_1). Restituisce il primo valore non null nell’elenco, da sinistra a destra.

Per esempio, verificherà prima se value_1 è null. In caso contrario, restituisce value_1. Altrimenti controlla se value_2 è null. Il processo continua fino alla fine dell’elenco. 

COALESCE() può essere usata con colonne, espressioni o costanti.

Esempi pratici di COALESCE()

Esegui e modifica il codice da questo tutorial online

Esegui codice

Esempio 1: Sostituire null con una costante

Considera la tabella countries con un elenco di paesi e le rispettive feste nazionali. Alcuni valori del giorno nazionale sono null. COALESCE() riempie i valori mancanti in national_day con la stringa costante 'Unknown'.

SELECT
   country_id,
   name, 
   national_day,
   COALESCE(national_day, 'Unknown') AS national_day_coalesced
FROM countries
ORDER BY country_id

I risultati sono i seguenti:

country_id

name

national_day

national_day_coalesced

1

Aruba

null

Unknown

2

Afghanistan

1919-08-19T00:00:00.000Z

1919-08-19

3

Angola

1975-11-11T00:00:00.000Z

1975-11-11

4

Anguilla

1967-05-30T00:00:00.000Z

1967-05-30

Nota come il valore null in national_day sia sostituito dalla costante Unknown

Esempio 2: Scegliere tra due colonne

Abbiamo una tabella chiamata products. Contiene il nome del prodotto e la sua descrizione. Alcune descrizioni sono troppo lunghe (più di 60 caratteri). In quel caso, sostituiamo la descrizione con il nome del prodotto.

La query seguente usa CASE per convertire le descrizioni lunghe in NULL, poi usa COALESCE() per ripiegare sul nome del prodotto.

SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE WHEN 
         LENGTH(description) >= 60 
         THEN NULL 
         ELSE description 
         END, 
      product_name) product_name_or_description
FROM products

I risultati sono i seguenti:

product_name

description

product_name_or_description

G.Skill Ripjaws V Series

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:14Module:4x16GBSize:64GB"

G.Skill Ripjaws V Series

G.Skill Ripjaws V Series

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:15Module:4x16GBSize:64GB"

G.Skill Ripjaws V Series

Asus X99-E-10G WS

"CPU:LGA2011-3,Form Factor:SSI CEB,RAM Slots:8,Max RAM:128GB"

"CPU:LGA2011-3,Form Factor:SSI CEB,RAM Slots:8,Max RAM:128GB"

Supermicro X9SRH-7TF

"CPU:LGA2011,Form Factor:ATX,RAM Slots:8,Max RAM:64GB"

"CPU:LGA2011,Form Factor:ATX,RAM Slots:8,Max RAM:64GB"

Nota come la colonna product_name_or_description mostri il product_name se la description è lunga. Altrimenti, mostra la description.

Esempio 3: Logica di fallback con più colonne

Possiamo fare un passo oltre l’esempio 2. Supponiamo che al momento ci siano due requisiti:

  • Se la lunghezza della description è inferiore a 60, allora mostra la description.
  • Altrimenti, controlla se la lunghezza di product_name è inferiore a 20. Se lo è, mostriamo il product_name.
  • Altrimenti, mostra product.
SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE 
         WHEN LENGTH(description) > 50
         THEN NULL
         ELSE description
      END,
   CASE 
      WHEN LENGTH(product_name) > 14
      THEN NULL
      ELSE product_name
   END,
'product') AS product_name_or_description
FROM products
ORDER BY product_name

I risultati sono i seguenti:

product_name

description

product_name_or_description

ADATA ASU800SS-128GT-C

Series:Ultimate SU800,Type:SSD,Capacity:128GB,Cache:N/A

product

ADATA ASU800SS-512GT-C

Series:Ultimate SU800,Type:SSD,Capacity:512GB,Cache:N/A

product

AMD 100-5056062

Chipset:Vega Frontier Edition Liquid,Memory:16GBCore Clock:1.5GHz

product

AMD 100-505989

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

Nota come la colonna product_name_or_description mostri il product_name oppure la description a seconda delle lunghezze di product_name o description.

Motori SQL supportati

COALESCE() funziona in SQL Server (a partire dal 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse, BigQuery e Amazon RedShift.

Funzioni SQL correlate

Considerazioni finali

La funzione COALESCE() è uno strumento versatile per gestire i valori null e semplificare le tue query SQL. Che tu stia sostituendo dati mancanti con valori predefiniti o combinando più colonne in una, COALESCE() aiuta a mantenere la logica pulita e leggibile.

Pronto a migliorare le tue competenze SQL? Dai un’occhiata a questi corsi accessibili ai principianti e utili per la carriera su DataCamp:

FAQs

Cosa succede se tutti i valori in COALESCE() sono NULL?

Se ogni argomento passato alla funzione COALESCE() è NULL, la funzione restituirà NULL.

In cosa COALESCE() è diversa da ISNULL() o IFNULL()?

  • ISNULL() (SQL Server) e IFNULL() (MySQL, SQLite) accettano solo due argomenti.
  • COALESCE() può accettare più argomenti ed è più standard tra i diversi dialetti SQL.

  • COALESCE() fa parte dello standard ANSI SQL, mentre ISNULL() e IFNULL() sono specifiche del database.

Posso usare COALESCE() con espressioni o funzioni?

Sì, puoi usare nomi di colonne, letterali, funzioni o espressioni all’interno di COALESCE().

COALESCE(LOWER(name), 'unknown')

Ci sono costi prestazionali nell’uso di COALESCE()?

In generale, no—COALESCE() è efficiente. Tuttavia, se la usi con espressioni complesse o all’interno di query di grandi dimensioni, il database potrebbe valutare più espressioni del necessario, a seconda di come è scritta.

COALESCE() funziona con tipi di dati diversi?

Sì, ma tutti gli argomenti devono essere convertibili implicitamente a un tipo di dato comune. Altrimenti, potrebbe restituire un errore di conversione del tipo a seconda del tuo motore SQL.

Posso annidare funzioni COALESCE()?

Sì, puoi annidarle, anche se è raramente necessario dato che COALESCE() gestisce già più argomenti:

COALESCE(col1, COALESCE(col2, 'default'))

Questo è equivalente a:

COALESCE(col1, col2, 'default')
Argomenti

Corsi SQL popolari

Corso

Introduzione a SQL

2 h
1.6M
Impara a creare e interrogare i database relazionali utilizzando SQL in sole due ore.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altroMostra altro