resumo: este artigo analisa métodos para o tratamento de valores nulos em PostgreSQL usando a função COALESCE. Os tópicos discutidos com exemplos incluem:
1. O que é uma função COALESCE?2. Impedindo valores nulos com COALESCE
neste post, vamos entender o que é a função COALESCE e como usá-la no PostgreSQL.o que é uma função COALESCE?
COALESCE é uma função do sistema incorporada que pode ser considerada uma das expressões condicionais disponíveis no PostgreSQL. NULLIF, GREATEST, LEAST, and COALESCE are the types of conditional expressions in PostgreSQL.
A função COALESCE devolve a primeira expressão não-nula na lista indicada. Se todos os argumentos são nulos, então ele retornará NULL como sua saída.
O suporte a sintaxe é:
COALESCE(value_1,value_2,value_3,........value_n)
Os parâmetros ou argumentos são:
value_1,value_2,value_3,........value_n
Limitações
alguns pontos sobre a função de ADESÃO:
- Os parâmetros são testados para valores não NULOS.
- Os parâmetros devem ser todos do mesmo tipo de dados. Caso contrário, resultará num erro.
- A função COALESCE aceita um número ilimitado de argumentos.leva os argumentos da esquerda para a direita. a função Coalesce fornece compatibilidade semelhante, como NVL e IFNULL, que estão disponíveis em outros DBMS.
- CASE and COALESCE can be used for similar purposes, but the advantage of using COALESCE is that it requires far less typing.
- parará de avaliar os parâmetros assim que o primeiro valor não nulo for atingido.
exemplos
1. Aqui está como COALESCE funciona com um valor não nulo para o primeiro parâmetro:
a função COALESCE Encontra a primeira expressão não-nula no início, por isso irá sempre produzir o mesmo resultado, independentemente do que os restantes parâmetros contêm.2. Aqui é como COALESCE funciona quando um valor NULO é o primeiro parâmetro:
postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)
A função de ADESÃO encontrado um valor NULO no primeiro parâmetro, então ele continuou para o segundo parâmetro, que não foi NULO, de modo que o valor do parâmetro foi devolvido.3. Aqui está como interpreta vários valores nulos:
postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)
existem múltiplos NULLs nesta expressão, mas como o primeiro valor não NULL foi alcançado no terceiro parâmetro, todos os valores restantes foram desconsiderados.4. Se os tipos de dados dos parâmetros não coincidirem, isto irá produzir um erro:
postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched
o primeiro parâmetro é um inteiro, e a função now() devolve um timestamp com Fuso-horário. Como estes parâmetros não são do mesmo tipo, a assinatura da função é inválida, e assim produz e erro.5. Você pode usar outras funções como parâmetros dentro da função COALESCE:
postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)
impedindo valores nulos com COALESCE
uma aplicação útil da função COALESCE é evitar que valores nulos apareçam nos resultados da consulta.
exemplo
1. Crie uma tabela “vendas” usando o comando CREATE TABLE:
postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE
2. Inserir dados no quadro “vendas”:
3. Se tentarmos subtrair um valor na coluna ” desconto “de um valor na coluna” montante”, a última linha irá devolver um valor nulo. Isto porque qualquer aritmética realizada em um valor nulo resultará em nulo.
postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)