# SQL COALESCE(): Como determinar valores não NULL

A função SQL COALESCE() é utilizada para determinar o primeiro valor dentro de uma lista que não é NULL. Assim, a função é uma versão simplificada de uma instrução `CASE` correspondente.

## O que é a função SQL COALESCE()?

A palavra-chave NULL em [SQL](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-sql/) representa dados que não possuem valor. Esse caso ocorre, por exemplo, quando ainda você não conhece um **valor específico** em uma tabela e, portanto, não preenche o campo correspondente. Isso não significa necessariamente que o campo correspondente não tem valor, mas pode simplesmente significar que você não sabe qual é o valor. Embora esses valores NULL não sejam prejudiciais à primeira vista, se acumularem em um banco de dados, podem torná-lo confuso. A função SQL COALESCE() é usada para retornar o primeiro valor em uma lista que não é NULL.

## Sintaxe e requisitos de SQL COALESCE()

A sintaxe de SQL COALESCE() é bem simples. Ela é apresentada da seguinte forma:

```sql
COALESCE(valor1, valor2, …, n)
```

Você precisa de pelo menos dois argumentos. Se todos os argumentos tiverem o valor NULL, o resultado também será NULL.

## Exemplo de uso de SQL COALESCE()

Você pode rapidamente entender o funcionamento básico por meio de um exemplo simples. No código a seguir, inserimos vários argumentos e usamos o comando SQL SELECT para verificá-los.

```sql
SELECT COALESCE(NULL, NULL, NULL, 17, 49, NULL, 13, 15, 14, 15);
```

A saída neste caso será “17”, pois este é o primeiro valor que não é NULL.

## Combinar SQL COALESCE()

A função `COALESCE()` é muito mais útil quando combinada com outras operações. Para ilustrar, imaginemos uma tabela chamada “Funcionários”. Esta tabela contém as colunas “Nome”, “Localidade” e “Data de Nascimento”. Ela se parece com isso:

<table>
  <thead>
    <tr>
      <th><strong>Nome</strong></th>
      <th><strong>Localidade</strong></th>
      <th><strong>Data de Nascimento</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Pedro Moura</td>
      <td>Cascavel</td>
      <td>10.04.1967</td>
    </tr>
    <tr>
      <td>Sabrina Souza</td>
      <td>Cascavel</td>
      <td>27.07.1989</td>
    </tr>
    <tr>
      <td>Sebastião Ferreira</td>
      <td>Caldas Novas</td>
      <td></td>
    </tr>
    <tr>
      <td>Martin Becker</td>
      <td>Cascavel</td>
      <td>14.04.2001</td>
    </tr>
    <tr>
      <td>Sarah Bernardes</td>
      <td></td>
      <td>02.12.2005</td>
    </tr>
  </tbody>
</table>

Dois dos registros não estão preenchidos. Embora Sebastião Ferreira tenha uma data de nascimento e Sarah Bernardes tenha um local de residência, essas informações não são conhecidas no momento. Para identificar isso, a função SQL COALESCE() é útil. O código apropriado é:

```sql
SELECT Nome,
COALESCE(Localidade, 'À CONSULTAR') AS Localidade,
COALESCE(Data de Nascimento, 'À CONSULTAR') AS Data de Nascimento
FROM Funcionários;
```

A saída correspondente agora é:

<table>
  <thead>
    <tr>
      <th><strong>Nome</strong></th>
      <th><strong>Localidade</strong></th>
      <th><strong>Data de Nascimento</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Pedro Moura</td>
      <td>Cascavel</td>
      <td>10.04.1967</td>
    </tr>
    <tr>
      <td>Sabrina Souza</td>
      <td>Cascavel</td>
      <td>27.07.1989</td>
    </tr>
    <tr>
      <td>Sebastião Ferreira</td>
      <td>Caldas Novas</td>
      <td>À CONSULTAR</td>
    </tr>
    <tr>
      <td>Martin Becker</td>
      <td>Cascavel</td>
      <td>14.04.2001</td>
    </tr>
    <tr>
      <td>Sarah Bernardes</td>
      <td>À CONSULTAR</td>
      <td>02.12.2005</td>
    </tr>
  </tbody>
</table>

## Alternativas a SQL COALESCE()

A função SQL COALESCE() apresenta sobreposições com uma [instrução CASE](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-case/) e é basicamente uma versão abreviada dessa opção de consulta. O código CASE seria assim:

```sql
CASE
WHEN valor1 IS NOT NULL THEN valor1
WHEN valor2 IS NOT NULL THEN valor2
WHEN … IS NOT NULL THEN …
ELSE n
END
```

A função ISNULL também é semelhante à SQL COALESCE(). No entanto, ao contrário da função aqui abordada, ISNULL é avaliada apenas uma vez e não segue as regras do CASE.

Dica Um servidor que atende exatamente às suas necessidades: Com o [SQL Server Hosting](https://www.ionos.com/cloud/sql-server-hosting "SQL Server Hosting — IONOS") da IONOS, você pode optar por MSSQL, MySQL ou MariaDB e se beneficiar de consultorias personalizadas, fortes mecanismos de segurança e uma performance excepcional.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-coalesce/](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-coalesce/) for AI/LLM consumption.