sql >> Base de Datos >  >> RDS >> Oracle

2 formas de dar formato a un número con ceros a la izquierda en Oracle

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