Dúvidas com casas decimais

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
guterror
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 03 Out 2012 3:29 pm

Pessoal,
Boa tarde.
Procurei nos tópicos relacionados a casas decimais, porém não encontrei a resposta especifica para minha dúvida.
Vejam se consigo ser claro.
Estou tentando bolar um select que traga 17 algarismos, dentre eles, preciso de haja 5 casas decimais, e que o restante para o lado esquerdo, seja completado com zeros.
Vou tentar ilustrar através do número 22.
O retorno desejado seria:
00000000002100000

Consegui ser claro?
Estou tentando através de comandos parecidos com esse:
SELECT lpad(22, LENGTH('FFDDM'),0) FROM dual ;

Porém, sem sucesso !

Obrigado a todos!!
guterror
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 03 Out 2012 3:29 pm

guterror escreveu:Pessoal,
Boa tarde.
Procurei nos tópicos relacionados a casas decimais, porém não encontrei a resposta especifica para minha dúvida.
Vejam se consigo ser claro.
Estou tentando bolar um select que traga 17 algarismos, dentre eles, preciso de haja 5 casas decimais, e que o restante para o lado esquerdo, seja completado com zeros.
Vou tentar ilustrar através do número 22.
O retorno desejado seria:
00000000002200000

Consegui ser claro?
Estou tentando através de comandos parecidos com esse:
SELECT lpad(22, LENGTH('FFDDM'),0) FROM dual ;

Porém, sem sucesso !

Obrigado a todos!!
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá Guterror,

Serviria este exemplo?

Selecionar tudo

 SELECT TO_CHAR(22,'00000000000000000.00000') FROM DUAL;
Na máscara do TO_CHAR, o "0" (zero) força a apresentação do dígito, mesmo que não exista valor para o mesmo, antes ou depois do ponto.

Abraços,

Sergio Coutinho
guterror
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 03 Out 2012 3:29 pm

Boa tarde STCOUTINHO,
O problema é que na tabela eu terei somente o número 22, sem casas decimais.
Porém obrigatoriamente, eu precisarei preencher com zeros, simulando que haja casas decimais...
E no exemplo que você passou, sairia o "ponto" no retorno do select...
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá guterror,

Neste caso, creio que bastaria adicionar uma função de REPLACE "encapsulando" o resultado do TO_CHAR:

Selecionar tudo

SELECT REPLACE(TO_CHAR(22,'00000000000000000.00000'),'.','') FROM DUAL
Abraços,

Sergio Coutinho
guterror
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 03 Out 2012 3:29 pm

Sérgio,
Obrigado pela ajuda !!!
Já consegui chegar na idéia! :)
Responder
  • Informação
  • Quem está online

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