Mascarar CEP no select

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 19 Mar 2012 2:28 pm

Pessoal, boa tarde!

Estou com uma dúvida que deve ser bem simples de ser resolvida..

em uma tabela tenho o campo CEP que esta armazenaodo da seguinte forma: 05860120

Quando eu executar o select preciso que seja retornado da seguinte forma: 05860-120 (com o traço).


Se alguém souber por favor me ajudem...

Abraço
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

oPA, tenta assim..

Selecionar tudo

to_char('05860120', 'FM000000-000')
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 19 Mar 2012 2:28 pm

Da um erro..

Selecionar tudo

13:52:56  ORA-01481: invalid number format model

alguém tem mais uma idéia?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Use expressão regular:

Selecionar tudo

select regexp_replace('05860120', '([[:digit:]]{5})([[:digit:]]{3})', '\1-\2') as CEP_FORMAT from dual;
OBS: Garanta que tenha sempre 8 dígitos.
Rafael_Santos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 72
Registrado em: Sex, 18 Nov 2011 4:51 pm

Olá Douglas,
além da solução do Noctifero, você poderá tentar:

Selecionar tudo

SELECT substr( ' 05860120 ' , 1 , 5 ) || ' - ' || substr( ' 05860120 ' , 6 , length(' 05860120 ' ) ) AS CEP_FORMAT
FROM dual;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes