2008-10-01 11 views
15

Potrzebuję numerów klocków z wiodącymi zerami (łącznie 8 cyfr) do wyświetlenia. Używam wyroczni.niechciane wiodące puste miejsce w formacie liczby oracle

select to_char(1011,'00000000') OPE_NO from dual; 
select length(to_char(1011,'00000000')) OPE_NO from dual; 

Zamiast "00001011" otrzymuję "00001011". Dlaczego otrzymuję dodatkową pustą pustą przestrzeń? Jaki jest prawidłowy ciąg formatowania liczb, aby to osiągnąć?

P.S. Zdaję sobie sprawę, że mogę po prostu użyć trim(), ale chcę lepiej zrozumieć formatowanie liczb.

@Ddie: Przeczytałem już dokumentację. A jednak wciąż nie rozumiem, jak pozbyć się wiodących białych znaków.

@David: Czy to znaczy, że nie ma innego sposobu, jak użyć trim()?

+1

Zobacz również http://stackoverflow.com/questions/6695604/oracle-why-does-the-leading-zero-of-a-number-disappear-when-converting-it-to- c/27946804 # 27946804 na niechciane okresy wyprzedzające (brak wiodącego zera). – Vadzim

Odpowiedz

29

Użyj FM (Tryb wypełnienia), np.

select to_char(1011,'FM00000000') OPE_NO from dual;

6

Od tego samego documentation wspomnianym przez EddieAwad:

Ujemne wartości zwracane automatycznie zawierać wiodącą znak ujemny i pozytywne wartości automatycznie zawierać wiodącą miejsca ile model Format zawiera MI, S lub Element PR element.


EDIT: Prawo sposobem jest użycie modyfikatora FM, jak odpowiedział Steve Bosman. Przeczytaj sekcję o Format Model Modifiers, aby uzyskać więcej informacji.

Powiązane problemy