sql >> Base de Datos >  >> RDS >> PostgreSQL

2 formas de agregar ceros a la izquierda en PostgreSQL

En PostgreSQL, podemos usar TO_CHAR() Función para agregar ceros a la izquierda de un número. La función convierte el número en una cadena, usando el formato (opcional) que especificamos.

Otra opción es usar el LPAD() función para rellenar un número con ceros a la izquierda.

El TO_CHAR() Función

Al usar TO_CHAR() función, use el 0 elemento de formato para incluir ceros iniciales y/o finales.

Ejemplo:

SELECT TO_CHAR(7, 'fm000');

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";

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";

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";

Resultado:

 Minus Sign | Padded | Not Padded 
------------+--------+------------
 -007       |  007   | 007

El LPAD() Función

Alternativamente, podemos usar el LPAD() función para rellenar números con ceros a la izquierda:

SELECT LPAD('7', 3, '0');

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";

Resultado:

 r1 |  r2   |  r3   |  r4   |  r5   
----+-------+-------+-------+-------
 7  | 00077 | 00777 | 07777 | 77777

Tenga en cuenta que esta función requiere que el número se pase como una cadena. Por lo tanto, primero debemos convertir el número en una cadena. El carácter de relleno también debe ser una cadena.

Así que puede que tengamos que hacer algo como esto:

SELECT LPAD(CAST(7 AS varchar), 3, '0');

Resultado:

007

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";

Resultado:

 r1 |  r2   |  r3   |  r4   |  r5   
----+-------+-------+-------+-------
 7  | ...77 | ..777 | .7777 | 77777