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