[Curiosidade] Espaço vazio com to_char

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
tiago_pimenta
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 213
Registrado em: Qua, 29 Jun 2011 9:49 am
Localização: Barretos / SP

Pessoal, bom dia.

Estou com uma curiosidade/dúvida e queria saber se alguém aqui poderia me explicar, vou usar um select simples só como exemplo:

Selecionar tudo

select to_char(2016, '0000') to_char, length(to_char(2016, '0000')) leng_to_char, lpad(2016, 4, 0) lpadd, length(lpad(2016, 4, 0)) len_lpad from dual
Como podem ver, porque quando eu uso o to_char ele acrescenta um espaço vazio na frente (Se usar o dbms_ouput.put_line fica mais claro) ficando com 5 "caracteres" e quando eu uso o lpad ele não acrescenta, ficando com 4 "caracteres" ?

Obrigado

- DB -
Oracle Database 11g Release 11.2.0.3.0 - 64bit
marcio.adao
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Sex, 18 Mai 2007 11:52 am
Localização: Descalvado

Olá, Tiago!
Este espaço é para o sinal do número. Por default, o sinal de positivo aparece como espaço. Coloque um S na máscara para ver o sinal.

Selecionar tudo

select to_char(2016, 'S0000') to_char, length(to_char(2016, '0000')) leng_to_char, lpad(2016, 4, 0) lpadd, length(lpad(2016, 4, 0)) len_lpad from dual;
Abraços,
Márcio.
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Olá,

Veja se o problema é o espaço ... coloque o TRIM :wink:

SELECT TRIM(TO_CHAR(2016, '0000')) TO_CHAR, LENGTH(TRIM(TO_CHAR(2016, '0000'))) LENG_TO_CHAR, LPAD(2016, 4, 0) LPADD, LENGTH(LPAD(2016, 4, 0)) LEN_LPAD FROM DUAL;

Sem mais,
Responder
  • Informação
  • Quem está online

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