Função DECODE

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
fernandolacerda
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Dom, 04 Jul 2010 9:57 am
Localização: ITUIUTABA-MG
Fernando Lacerda

boa tarde pessoal,

usei a função DECODE assim, funcionou beleza

Selecionar tudo

SELECT codigo,descricao,CODBARRAS,
       DECODE (codigo,'2', 'PAR', 
              descricao) teste
FROM PRODUTOS;
gostaria de saber se tem como colocar uma expressão na função DECODE?

desde já agradeço....
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

E que tal usar a expressão case?

Selecionar tudo

Select codigo,
       descricao,
       codbarras,
       Case
         When codigo = 2 Then
           'PAR'
         When ..... Then
           xxxx
         Else
           descricao
         End  teste
  From produtos;
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

o que seria expressão?
expressão regular?

Selecionar tudo

select decode(null,null, REGEXP_SUBSTR('Yababa dababa do','(ab)\1'), '') from dual;
Avatar do usuário
fernandolacerda
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Dom, 04 Jul 2010 9:57 am
Localização: ITUIUTABA-MG
Fernando Lacerda

por exemplo, se eu fosse colocar uma expressao pra verificar se o numero é par ou impar, como ficaria?
dudu0566
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 74
Registrado em: Seg, 06 Ago 2007 3:59 pm
Localização: Campinas - SP
Eduardo Gomes

respondendo a primeira pergunta tem como fazer um decode comparativo:

Selecionar tudo

MAIOR
decode(greatest(valor,10)
          ,10,'então valor é menor ou igual a 10'
          ,'então valor é maior que 10'
          )
MENOR
decode(least(valor,10)
          ,10,'então valor é maior ou igual a 10'
          ,'então valor é menor que 10'
          )
VALOR ENTRE "X" E "Y"
decode(least(valor,10)
          ,10,decode(greatest(valor,20)
                          ,20,'então valor está entre 10 e 20'
                          ,'então valor é maior que 20'
                          )
          ,'então valor é menor que 10'
          )
ps: desculpem a identação, ou a falta dela!!!!
abs
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Selecionar tudo

Select Case
         When greatest(&valor,10) = 10 Then
           'então valor é menor ou igual a 10'
         Else
           'então valor é maior que 10'
       End 
From dual
Da mesma forma para as outras validações...[/code]
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Quanto a pergunta do par ou impar segue um exemplo.

Selecionar tudo

SELECT decode(MOD(&numero,2),0,'É par', 'É impar') FROM dual
Você pode sim fazer diversos tipos de condições dentro do decode, pode fazer-los atraves de funções, ou mesmo utilizando subselects para testar valores.

Se tiveres alguma duvida de como montar um determinado decode posta aí.
Avatar do usuário
fernandolacerda
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Dom, 04 Jul 2010 9:57 am
Localização: ITUIUTABA-MG
Fernando Lacerda

valeu ai pessoal pela ajuda.....
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante