Come Sostituire i Valori NULL con 0 o Numeri Specifici in SQL

Gestire correttamente i valori NULL nelle operazioni di database è fondamentale per mantenere l’integrità dei dati e garantire risultati di query accurati. I valori NULL indicano l’assenza di dati e possono influire sui calcoli e sulle aggregazioni. In questo articolo, spiegheremo in dettaglio come sostituire i valori NULL con 0 o numeri specifici in SQL, usando esempi concreti.

Indice

Basi dei Valori NULL

I valori NULL in un database significano l’assenza di dati specifici. Questo indica “nessun valore” ed è diverso da uno 0 numerico o da una stringa vuota. I valori NULL sono comunemente utilizzati nei seguenti scenari:

  • Quando un valore non è ancora stato inserito
  • Quando un valore corrispondente non esiste
  • Quando un valore è sconosciuto

In SQL, confronti o calcoli che coinvolgono valori NULL richiedono una gestione speciale. Ad esempio, un semplice confronto di uguaglianza con il segno di uguale (=) su una colonna contenente valori NULL non funzionerà come previsto. Poiché i valori NULL sono considerati sconosciuti, non sono ritenuti uguali a nulla. Pertanto, per controllare i valori NULL, usare IS NULL o IS NOT NULL.

Inoltre, bisogna fare attenzione quando si operano colonne contenenti valori NULL. Ad esempio, durante l’aggregazione di una colonna con valori NULL, quei valori NULL sono spesso ignorati, il che può portare a risultati indesiderati. Per evitare questo, è efficace sostituire i valori NULL con 0 o numeri specifici. La sezione successiva spiega come fare questo in dettaglio.

Come Sostituire i Valori NULL con 0

Per sostituire i valori NULL con 0 in SQL, è comune usare la funzione COALESCE o la funzione IFNULL. Queste funzioni restituiscono il valore specificato se esiste un valore NULL. Di seguito viene spiegato come usare queste funzioni con esempi concreti.

Utilizzo della Funzione COALESCE

La funzione COALESCE prende più argomenti e restituisce il primo argomento non NULL. Ecco come usare la funzione COALESCE per sostituire i valori NULL con 0.

SELECT COALESCE(column_name, 0) AS new_column_name
FROM table_name;

Esempio

Ad esempio, se la colonna revenue nella tabella sales contiene valori NULL, la query per sostituire quei valori NULL con 0 è la seguente:

SELECT COALESCE(revenue, 0) AS revenue
FROM sales;

Utilizzo della Funzione IFNULL

La funzione IFNULL è una funzione specifica di MySQL che restituisce un valore specificato se esiste un valore NULL. Serve allo stesso scopo della funzione COALESCE ma prende solo due argomenti.

SELECT IFNULL(column_name, 0) AS new_column_name
FROM table_name;

Esempio

Ad esempio, se la colonna revenue nella tabella sales contiene valori NULL, la query per sostituire quei valori NULL con 0 usando la funzione IFNULL è la seguente:

SELECT IFNULL(revenue, 0) AS revenue
FROM sales;

Usando queste funzioni, è possibile sostituire i valori NULL con 0 e eseguire agevolmente calcoli e aggregazioni. La sezione successiva spiega come sostituire i valori NULL con numeri specifici.

Come Sostituire i Valori NULL con Numeri Specifici

Per sostituire i valori NULL con un numero specifico diverso da 0, è possibile utilizzare anche la funzione COALESCE o la funzione IFNULL. Questo permette di specificare un numero particolare per gestire adeguatamente i valori NULL.

Utilizzo della Funzione COALESCE

La funzione COALESCE restituisce il primo valore non NULL da più argomenti. Per sostituire i valori NULL con un numero specifico, specificare quel numero come secondo argomento.

SELECT COALESCE(column_name, specific_value) AS new_column_name
FROM table_name;

Esempio

Ad esempio, se la colonna bonus nella tabella employee contiene valori NULL, la query per sostituire quei valori NULL con 500 è la seguente:

SELECT COALESCE(bonus, 500) AS bonus
FROM employee;

Utilizzo della Funzione IFNULL

La funzione IFNULL è una funzione specifica di MySQL che sostituisce i valori NULL con un numero specificato e prende due argomenti. Specificare il numero particolare come secondo argomento.

SELECT IFNULL(column_name, specific_value) AS new_column_name
FROM table_name;

Esempio

Ad esempio, se la colonna bonus nella tabella employee contiene valori NULL, la query per sostituire quei valori NULL con 500 usando la funzione IFNULL è la seguente:

SELECT IFNULL(bonus, 500) AS bonus
FROM employee;

Questo permette di sostituire i valori NULL con numeri specifici, mantenendo la consistenza dei dati durante l’esecuzione dei calcoli e delle analisi necessarie. La sezione successiva spiega metodi di sostituzione più complessi usando l’istruzione CASE.

Metodi di Sostituzione Complessi Usando l’Istruzione CASE

Usando l’istruzione CASE, è possibile sostituire i valori NULL con valori specifici in base alle condizioni. L’istruzione CASE permette una sostituzione più flessibile e complessa.

Struttura di Base dell’Istruzione CASE

La struttura di base dell’istruzione CASE è la seguente:

SELECT 
    CASE 
        WHEN condition THEN value
        ELSE alternative_value
    END AS new_column_name
FROM table_name;

Esempio

Ad esempio, se la colonna discount nella tabella sales contiene valori NULL, è possibile sostituirli in base alle seguenti condizioni:

  1. Sostituire discount con 100 se è NULL e total_sales è 1000 o più
  2. Sostituire discount con 50 se è NULL e total_sales è inferiore a 1000

La query per questo caso è la seguente:

SELECT 
    CASE 
        WHEN discount IS NULL AND total_sales >= 1000 THEN 100
        WHEN discount IS NULL AND total_sales < 1000 THEN 50
        ELSE discount
    END AS adjusted_discount
FROM sales;

Combinazione delle Condizioni per la Sostituzione

È anche possibile combinare condizioni più complesse. Ad esempio, se si desidera sostituire la colonna bonus nella tabella employee in base alle seguenti condizioni:

  1. Sostituire bonus con 1000 se è NULL e performance_rating è 5
  2. Sostituire bonus con 500 se è NULL e performance_rating è tra 3 e 4
  3. Sostituire bonus con 200 se è NULL e performance_rating è inferiore a 3

La query per questo caso è la seguente:

SELECT 
    CASE 
        WHEN bonus IS NULL AND performance_rating = 5 THEN 1000
        WHEN bonus IS NULL AND performance_rating BETWEEN 3 AND 4 THEN 500
        WHEN bonus IS NULL AND performance_rating < 3 THEN 200
        ELSE bonus
    END AS adjusted_bonus
FROM employee;

Come si può vedere, usando l’istruzione CASE, è possibile sostituire flessibilmente i valori NULL in base a varie condizioni. La sezione successiva riassume i contenuti discussi finora.

Conclusione

Abbiamo spiegato come sostituire i valori NULL con 0 o numeri specifici in SQL. I valori NULL sono indicatori speciali di “assenza” in un database e, se non gestiti adeguatamente, possono influire sui calcoli e sui risultati di aggregazione. Usando la funzione COALESCE o la funzione IFNULL, è possibile sostituire facilmente i valori NULL con 0 o numeri specificati. Inoltre, usando l’istruzione CASE, è possibile sostituire i valori NULL in base a condizioni più complesse.

Utilizzando questi metodi, è possibile mantenere la consistenza dei dati e ottenere risultati di query accurati. Utilizzare efficacemente queste tecniche nelle operazioni pratiche di database può aiutare a migliorare la qualità dei dati e ad aumentare la precisione delle analisi.

Indice