57 votes

Pourquoi est-Oracle to_char() la fonction en ajoutant des espaces?

Pourquoi est-Oracle to_char() de la fonction en ajoutant des espaces?

select length('012'), 
       length(to_char('012')), 
       length(to_char('12', '000')) 
  from dual;

3, 3, 4

117voto

Tony Andrews Points 67363

Le plus grand espace est pour le potentiel de signe moins. Pour supprimer l'espace que vous pouvez utiliser FM dans le format:

SQL> select to_char(12,'FM000') from dual;

TO_C
----
012

En passant, notez que to_char prend un certain NOMBRE d'argument; to_char('012') est implicitement converti à to_char(to_number('012')) = to_char(12)

31voto

James Curran Points 55356

Pour rendre les réponses plus claires:

select '['||to_char(12, '000')||']', 
       '['||to_char(-12, '000')||']', 
       '['||to_char(12,'FM000')||']' 
from dual


[ 012]                      [-012]                       [012]

28voto

stjohnroe Points 1844

Le masque de format que vous utilisez est de largeur fixe et permet un signe moins

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X