Função DECODE
Autor: Professor Paulo Kaupa
A função DECODE irá avaliar as condições definidas e então retornar um valor de acordo com o que for encontrado. Funciona como a estrutura CASE e IF-THEN_ELSE. Resumidamente o DECODE irá transformar (decodificar) um valor em outro.
Exemplo de uso:
Caso exista uma tabela de colaboradores com uma coluna para identificar o sexo do colaborador, esta coluna grava F e M, sendo F para o sexo Feminino e M para o sexo Masculino. Quando realiza-se um SELECT nesta tabela e deseja-se exibir as palavras Feminino e Masculino ao invés das letras iniciais. Mas como fazer isso se o que foi gravado foram apenas as letras inicias? A resposta é: Usando a função DECODE.
Sintaxe:
DECODE
(
expressão ,
valor procurado ,
resultado,
valor padrão
);
Onde:
Expressão - Um valor (coluna da tabela) para comparação.
valor procurado
Valor que será comparado com a expressão.
resultado
Valor a ser retornado se a expressão for igual ao valor procurado
valor padrão
Parametro opcional. Caso nenhum valor for encontrado (se nenhuma expressão for igual ao valor procurado), a função DECODE irá retorna o valor informado como valor padrão. Se não houver uma condição padrão será retornado Nulo (Null).
Exemplo 01:
Para uma melhor assimilação da função DECODE, a seguir o script para criação de uma tabela, inserção de valores e então o uso da função DECODE para tratar o retorno dos dados.
CREATE TABLE TB_COLABORADOR
(
CODIGO_COLABORADOR NUMBER(38) PRIMARY KEY,
NOME_COLABORADOR VARCHAR(50) NOT NULL,
SEXO CHAR(1)
);
COMMIT;
Insira alguns registros em sua tabela, conforme a seguir:
INSERT INTO TB_COLABORADOR VALUES (1, 'PAULO', 'M');
INSERT INTO TB_COLABORADOR VALUES (2, 'JULIA', 'F');
COMMIT;
Para retornar os valores inseridos use o script a seguir:
SELECT
NOME_COLABORADOR,
SEXO
FROM
TB_COLABORADOR;
O valor para a coluna sexo deverão ser F e M.
Para que seja exibido Feminino onde for F e masculino onde for M, use o SELECT junto com o DESCODE:
SELECT
NOME_COLABORADOR,
DECODE(SEXO, 'F', 'Feminino', 'M', 'Masculino')
FROM
TB_COLABORADOR;
Neste exemplo a função DECODE, decodificou os códigos retornados pela coluna SEXO e exibiu as descrições associadas a cada código, quando encontrou F a função exibiu Feminino, quando encontrou M exibiu Masculino.
Nota: O número máximo de componentes que pode-se ter na função DECODE é 255, incluindo expressões, valores procurados e resultado.
Exercício proposto – Função DECODE
1 – Crie um script para a criação de uma tabela chamada TB_MUSICA, que contenha colunas para armazenar os seguintes valores:
CÓDIGO DA MÚSICA NUMBER(38) PRIMARY KEY
NOME DA GRAVADORA VARCHAR (50)
INTERNACIONAL _NACIONAL CHAR(1) NOT NULL
CÓDIGO DA GRAVADORA
2 – Elabore um script para adicionar uma regra na coluna que irá identificar se a música é Internacional ou Nacional, esta regra deve permitir que apenas as letras I (Importado) ou N (Nacional) sejam inseridas.
3 – Insira alguns registros na TB_MUSICA.
4 – Elabore um Script para selecionar os registros da TB_MUSICA e use a função DECODE para retornar ‘Internacional’ onde a coluna INTERNACIONAL _NACIONAL estiver preenchida com ‘I’ e ‘Nacional’ a coluna INTERNACIONAL _NACIONAL estiver preenchida com ‘N’.