2008-10-01 14 views
15

Ich muss Zahlen mit führenden Nullen (insgesamt 8 Ziffern) für die Anzeige auffüllen. Ich benutze Orakel.unerwünschte führende Leerzeichen auf Orakel Zahlenformat

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

Anstelle von '00001011' bekomme ich '00001011'. Warum erhalte ich eine zusätzliche führende Leerstelle? Was ist der korrekte Zahlenformatierungsstring, um dies zu erreichen?

P.S. Ich weiß, ich kann einfach trim() verwenden, aber ich möchte besser Zahlenformatierung verstehen.

@Eddie: Ich habe bereits die Dokumentation gelesen. Und dennoch verstehe ich immer noch nicht, wie ich die führenden Leerzeichen beseitigen kann.

@David: Also bedeutet das, dass es keine andere Möglichkeit gibt, als trim() zu verwenden?

+1

Siehe auch http://stackoverflow.com/questions/6695604/oracle-why-does-the-leading-zero-of-a-number-disappear-when-converting-it-to- c/27946804 # 27946804 zu unerwünschten Vorlaufzeiten (fehlende führende Null). – Vadzim

Antwort

29

Verwenden FM (Füllmodus), z.

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

6

Aus denselben documentation von EddieAwad erwähnt:

Negativen Rückgabewerte automatisch enthalten ein führendes negatives Vorzeichen und positive Werte enthalten automatisch einen führenden Platz, wenn das Format Modell den MI, S enthält, oder PR-Format Element.


EDIT: Der richtige Weg ist, um den FM-Modifikator zu verwenden, wie von Steve Bosman beantwortet. Lesen Sie den Abschnitt über Format Model Modifiers für weitere Informationen.

Verwandte Themen