Observe a tabela abaixo:
PESSOA | |||
CD_PESSOA | NOME | SOBRENOME | IDADE |
1 | Felipe | Barbosa | 23 |
2 | Ana | null | null |
3 | João | Santos | null |
4 | Aline | null | 21 |
5 | Maira | 25 | |
6 | Ana | null | |
7 | Aline | Ferreira | 22 |
Veja que nas colunas SOBRENOME e IDADE há valores nulos, e também está presente alguns registros com o sobrenome vazio (lembre-se vazio é diferente de null).
Com a execução do SQL:
SELECT NOME
, SOBRENOME
, IDADE
FROM PESSOA;
Conseguimos facilmente retornar os valores contidos na tabela PESSOA. Entretanto, o usuário irá visualizar os seguintes dados:
Resultado:
NOME | SOBRENOME | IDADE |
Felipe | Barbosa | 23 |
Ana | null | null |
João | Santos | null |
Aline | null | 21 |
Maira | 25 | |
Ana | null | |
Aline | Ferreira | 22 |
Note que sem realizar o tratamento dos dados, estamos cometendo um ERRO ao apresentar null para o usuário.
- Solução. Realizar tratamento de nulidade e valores vazios.
No banco de dados (DB) Oracle temos a função NVL() para realizar o tratamento do resultado nulo ou vazio de uma expressão.
Sintaxe:
NVL(expressão, 'texto para substituição')
Ou seja, o primeiro argumento da função é uma expressão que pode ser uma coluna, o resultado de outra função, etc. Já o segundo argumento é uma string (texto qualquer) que você queira que seja apresentado quando o primeiro argumento seja nulo ou vazio.
Exemplos:
1) - NVL('Felipe', 'Ana')
Resultado: Felipe
2) - NVL('', 'Ana')
Resultado: Ana
3) - NVL(null, 'Ana')
Resultado: Ana
4) - Agora vamos usar a função no nosso primeiro SQL:
SELECT NOME
, NVL(SOBRENOME, 'Não cadastrado')
, NVL(IDADE, 'Não cadastrado')
FROM PESSOA;
Resultado:
NOME | SOBRENOME | IDADE |
Felipe | Barbosa | 23 |
Ana | Não cadastrado | Não cadastrado |
João | Santos | Não cadastrado |
Aline | Não cadastrado | 21 |
Maira | Não cadastrado | 25 |
Ana | Não cadastrado | Não cadastrado |
Aline | Ferreira | 22 |
De forma prática realizamos a substituição de dados nulos e vazios para o valor 'Não cadastrado', assim retornando ao usuário uma resposta legível.
Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA
Até o próximo post!