oracle - to_varchar - ¿Por qué TO_CHAR agrega espacio(un carácter blanco) al comienzo de un número?
to_number oracle format mask (1)
No, no es un error, es el comportamiento documentado .
Los valores de devolución negativos contienen automáticamente un signo negativo inicial y los valores positivos contienen automáticamente un espacio inicial a menos que el modelo de formato contenga el elemento de formato MI, S o PR.
Puede usar un modificador de modelo de formato para cambiar este comportamiento; en este caso, el modificador FM
''fill mode'' (aunque la documentación realmente no habla sobre su uso con modelos de formato numérico):
SELECT to_char(LEVEL - 1, ''fm0000'') ...
Mientras preparaba este SQL Fiddle basado en este código:
WITH l_cur AS
(SELECT to_char(LEVEL - 1, ''0000'') dd FROM dual CONNECT BY LEVEL <= 10)
SELECT '''''''' || d1.dd || '''''''' o,
'''''''' || d2.dd || '''''''' n
FROM (SELECT dd,
row_number() over(ORDER BY 1) rn
FROM l_cur) d1,
(SELECT dd,
row_number() over(ORDER BY dbms_random.random) rn
FROM l_cur) d2
WHERE d1.rn = d2.rn;
O N
------- -------
'' 0000'' '' 0000''
'' 0001'' '' 0005''
'' 0002'' '' 0009''
'' 0003'' '' 0003''
'' 0004'' '' 0002''
'' 0005'' '' 0008''
'' 0006'' '' 0006''
'' 0007'' '' 0001''
'' 0008'' '' 0007''
'' 0009'' '' 0004''
10 rows selected
Para funcionar to_char
es agregar un carácter en blanco '''' (espacio) al comienzo. ¿Es esto un error de Oracle?