Al usar Oracle Database para formatear un número para que tenga ceros a la izquierda, debemos convertirlo en una cadena y darle el formato correspondiente.
Puedes usar el TO_CHAR(number)
función para formatear números con ceros a la izquierda.
Y quizás un hecho menos conocido, es que también puedes usar el LPAD()
función para rellenar un número con ceros a la izquierda.
El TO_CHAR()
Función
Al usar el TO_CHAR(number)
función, use el 0
elemento de formato para incluir ceros iniciales y/o finales.
Ejemplo:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Resultado:
007
Aquí está en comparación con el 9
elemento de formato:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;
Resultado:
9 0 ____ ______ 7 007
El número de ceros a la izquierda está determinado por el número de 0
elementos de formato y el número de dígitos en el número:
SELECT
TO_CHAR(77, 'fm0') AS "r1",
TO_CHAR(77, 'fm00000') AS "r2",
TO_CHAR(777, 'fm00000') AS "r3",
TO_CHAR(7777, 'fm00000') AS "r4",
TO_CHAR(77777, 'fm00000') AS "r5"
FROM DUAL;
Resultado:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ ## 00077 00777 07777 77777
El fm
El modificador de formato suprime cualquier relleno inicial o final que pueda incluirse en el resultado. Por ejemplo, cuando el número es negativo, se antepone un signo menos. Pero cuando el número es positivo, no se incluye ningún signo y aparece un espacio donde habría estado el signo más.
Aquí hay un ejemplo para demostrar esto:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;
Resultado:
Minus Sign Padded Not Padded _____________ _________ _____________ -007 007 007
El LPAD()
Función
Alternativamente, podemos usar el LPAD()
función para formatear números con ceros a la izquierda.
Ejemplo:
SELECT LPAD(7, 3, '0')
FROM DUAL;
Resultado:
007
Otro ejemplo:
SELECT
LPAD(77, 1, '0') AS "r1",
LPAD(77, 5, '0') AS "r2",
LPAD(777, 5, '0') AS "r3",
LPAD(7777, 5, '0') AS "r4",
LPAD(77777, 5, '0') AS "r5"
FROM DUAL;
Resultado:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 00077 00777 07777 77777
Uno de los beneficios que LPAD()
tiene sobre el método anterior es que podemos prefijar el resultado con otros caracteres, no es necesario que sea un cero inicial.
SELECT
LPAD(77, 1, '.') AS "r1",
LPAD(77, 5, '.') AS "r2",
LPAD(777, 5, '.') AS "r3",
LPAD(7777, 5, '.') AS "r4",
LPAD(77777, 5, '.') AS "r5"
FROM DUAL;
Resultado:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 ...77 ..777 .7777 77777