Como Substituir Valores NULL por 0 ou Números Específicos no SQL

Manipular corretamente os valores NULL em operações de banco de dados é crucial para manter a integridade dos dados e garantir resultados precisos nas consultas. Valores NULL indicam a ausência de dados e podem impactar cálculos e agregações. Neste artigo, explicaremos em detalhes como substituir valores NULL por 0 ou números específicos no SQL, usando exemplos concretos.

Índice

Noções Básicas sobre Valores NULL

Valores NULL em um banco de dados significam a ausência de dados específicos. Isso significa “nenhum valor” e é diferente de um 0 numérico ou uma string vazia. Valores NULL são comumente usados nos seguintes cenários:

  • Quando um valor ainda não foi inserido
  • Quando um valor correspondente não existe
  • Quando um valor é desconhecido

No SQL, comparações ou cálculos envolvendo valores NULL requerem manipulação especial. Por exemplo, uma comparação simples de igualdade com um sinal de igual (=) em uma coluna contendo valores NULL não funcionará como esperado. Como valores NULL são considerados desconhecidos, eles não são considerados iguais a nada. Portanto, para verificar valores NULL, use IS NULL ou IS NOT NULL.

Além disso, seja cauteloso ao operar em colunas que contêm valores NULL. Por exemplo, ao agregar uma coluna com valores NULL, esses valores NULL são frequentemente ignorados, o que pode levar a resultados não intencionais. Para evitar isso, é eficaz substituir valores NULL por 0 ou números específicos. A próxima seção explica como fazer isso em detalhes.

Como Substituir Valores NULL por 0

Para substituir valores NULL por 0 no SQL, é comum usar a função COALESCE ou a função IFNULL. Essas funções retornam o valor especificado se existir um valor NULL. A seguir, explicamos como usar essas funções com exemplos concretos.

Usando a Função COALESCE

A função COALESCE aceita múltiplos argumentos e retorna o primeiro argumento não NULL. Veja como usar a função COALESCE para substituir valores NULL por 0.

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

Exemplo

Por exemplo, se a coluna revenue na tabela sales contiver valores NULL, a consulta para substituir esses valores NULL por 0 é a seguinte:

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

Usando a Função IFNULL

A função IFNULL é uma função específica do MySQL que retorna um valor especificado se existir um valor NULL. Ela serve ao mesmo propósito da função COALESCE, mas aceita apenas dois argumentos.

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

Exemplo

Por exemplo, se a coluna revenue na tabela sales contiver valores NULL, a consulta para substituir esses valores NULL por 0 usando a função IFNULL é a seguinte:

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

Usando essas funções, você pode substituir valores NULL por 0 e realizar cálculos e agregações suavemente. A próxima seção explica como substituir valores NULL por números específicos.

Como Substituir Valores NULL por Números Específicos

Para substituir valores NULL por um número específico diferente de 0, você também pode usar a função COALESCE ou a função IFNULL. Isso permite especificar um número particular para lidar com valores NULL de maneira apropriada.

Usando a Função COALESCE

A função COALESCE retorna o primeiro valor não NULL de múltiplos argumentos. Para substituir valores NULL por um número específico, especifique esse número como o segundo argumento.

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

Exemplo

Por exemplo, se a coluna bonus na tabela employee contiver valores NULL, a consulta para substituir esses valores NULL por 500 é a seguinte:

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

Usando a Função IFNULL

A função IFNULL é uma função específica do MySQL que substitui valores NULL por um número especificado e aceita dois argumentos. Especifique o número particular como o segundo argumento.

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

Exemplo

Por exemplo, se a coluna bonus na tabela employee contiver valores NULL, a consulta para substituir esses valores NULL por 500 usando a função IFNULL é a seguinte:

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

Isso permite substituir valores NULL por números específicos, mantendo a consistência dos dados ao realizar os cálculos e análises necessários. A próxima seção explica métodos de substituição mais complexos usando a instrução CASE.

Métodos Complexos de Substituição Usando a Instrução CASE

Usando a instrução CASE, você pode substituir valores NULL por valores específicos com base em condições. A instrução CASE permite um processamento de substituição mais flexível e complexo.

Estrutura Básica da Instrução CASE

A estrutura básica da instrução CASE é a seguinte:

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

Exemplo

Por exemplo, se a coluna discount na tabela sales contiver valores NULL, você pode substituí-los com base nas seguintes condições:

  1. Substituir discount por 100 se for NULL e total_sales for 1000 ou mais
  2. Substituir discount por 50 se for NULL e total_sales for menos de 1000

A consulta para este caso é a seguinte:

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;

Combinando Condições para Substituição

Condições mais complexas também podem ser combinadas. Por exemplo, se você quiser substituir a coluna bonus na tabela employee com base nas seguintes condições:

  1. Substituir bonus por 1000 se for NULL e performance_rating for 5
  2. Substituir bonus por 500 se for NULL e performance_rating estiver entre 3 e 4
  3. Substituir bonus por 200 se for NULL e performance_rating for menor que 3

A consulta para este caso é a seguinte:

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;

Como visto, ao usar a instrução CASE, é possível substituir valores NULL de maneira flexível com base em várias condições. A próxima seção resume o conteúdo discutido até agora.

Conclusão

Explicamos como substituir valores NULL por 0 ou números específicos no SQL. Valores NULL são indicadores especiais de “ausência” em um banco de dados e, se não forem manipulados adequadamente, podem afetar cálculos e resultados de agregação. Usando a função COALESCE ou a função IFNULL, você pode facilmente substituir valores NULL por 0 ou números especificados. Além disso, ao usar a instrução CASE, é possível substituir valores NULL com base em condições mais complexas.

Utilizando esses métodos, você pode manter a consistência dos dados e obter resultados precisos nas consultas. Utilizar essas técnicas de maneira eficaz em operações práticas de banco de dados pode ajudar a melhorar a qualidade dos dados e aprimorar a precisão de suas análises.

Índice