2008-10-01 9 views
15

J'ai besoin d'entrer des chiffres avec des zéros en tête (8 chiffres au total) pour l'affichage. J'utilise Oracle.espace vide non désiré au format numéro oracle

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

Au lieu de '00001011' j'obtiens '00001011'. Pourquoi j'obtiens un espace blanc supplémentaire? Quelle est la chaîne de formatage de nombre correct pour accomplir ceci?

P.S. Je me rends compte que je peux juste utiliser trim(), mais je veux mieux comprendre le formatage des nombres.

@Eddie: J'ai déjà lu la documentation. Et pourtant, je ne comprends toujours pas comment me débarrasser des espaces blancs.

@David: Cela signifie-t-il qu'il n'y a aucun moyen d'utiliser trim()?

+1

Voir aussi http://stackoverflow.com/questions/6695604/oracle-why-does-the-leading-zero-of-a-number-disappear-when-converting-it-to- c/27946804 # 27946804 sur les périodes principales non désirées (zéro principal manquant). – Vadzim

Répondre

29

Utilisez FM (mode Remplissage), par ex.

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

6

De même documentation mentionné par EddieAwad:

valeurs de retour négatives automatiquement contiennent un premier signe négatif et valeurs positives contiennent automatiquement un espace conduisant à moins que le modèle le format contient le MI, S, ou PR format élément.


EDIT: La bonne manière est d'utiliser le modificateur FM, comme une réponse par Steve Bosman. Lisez la section sur Format Model Modifiers pour plus d'informations.

Questions connexes