Ir para o conteúdo principal

Nvl e Coalesce

Com as funções NVL e COALESCE, é possível definir que, quando o campo retornar nulo, outro valor será retornado no lugar.

TABELA EXEMPLO

EX_PRODUTOS

| IDPRODUTO |    DESCRICAO    | VALOR_CUSTO | VALOR_VENDA |
-----------------------------------------------------------
|         1 | 'Arroz 1KG'     |        0.75 |      (null) |
|         2 | 'Feijão 1KG'    |        1.07 |        2.99 |
|         3 | 'Macarrão 500G' |      (null) |      (null) |

SQL de CRIAÇÃO/INSERÇÃO: 

CREATE TABLE ex_produtos (
  idproduto INTEGER,
  descricao VARCHAR2(200),
  valor_custo DECIMAL(15,2),
  valor_venda DECIMAL(15,2));
INSERT INTO ex_produtos VALUES (1, 'Arroz 1KG', 0.75, NULL);
INSERT INTO ex_produtos VALUES (2, 'Feijão 1KG', 1.07, 2.99);
INSERT INTO ex_produtos VALUES (3, 'Macarrão 500G', NULL, NULL);
NVL

A função NVL retorna o valor do segundo parâmetro quando o primeiro ser nulo. Só pode ser usado dois parâmetros de entrada.

SELECT descricao, NVL(valor_venda, valor_custo) AS valor FROM ex_produtos

Retorno:

|    DESCRICAO    |  VALOR |
----------------------------
| 'Arroz 1KG'     |   0.75 |
| 'Feijão 1KG'    |   2.99 |
| 'Macarrão 500G' | (null) |
COALESCE

A função COALESCE retorna o valor do parâmetro seguinte quando o anterior ser nulo. Pode ser usado quantos parâmetros de entrada for necessário.

SELECT descricao, COALESCE(valor_venda, valor_custo, 0) AS valor FROM ex_produtos

Retorno:

| DESCRICAO       | VALOR |
---------------------------
| 'Arroz 1KG'     |  0.75 |
| 'Feijão 1KG'    |  2.99 |
| 'Macarrão 500G' |     0 |