PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

2 façons d'ajouter des zéros non significatifs dans PostgreSQL

Dans PostgreSQL, nous pouvons utiliser le TO_CHAR() fonction pour ajouter des zéros non significatifs à un nombre. La fonction convertit le nombre en chaîne, en utilisant le format (facultatif) que nous spécifions.

Une autre option consiste à utiliser le LPAD() fonction pour remplir un nombre avec des zéros non significatifs.

Le TO_CHAR() Fonction

Lors de l'utilisation de TO_CHAR() fonction, utilisez le 0 élément de format pour inclure des zéros de début et/ou de fin.

Exemple :

SELECT TO_CHAR(7, 'fm000');

Résultat :

007

Le voici par rapport au 9 élément de format :

SELECT 
    TO_CHAR(7, 'fm999') AS "9",
    TO_CHAR(7, 'fm000') AS "0";

Résultat :

 9 |  0  
---+-----
 7 | 007

Le nombre de zéros non significatifs est déterminé par le nombre de 0 éléments de format et le nombre de chiffres dans le nombre :

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

Résultat :

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

Le fm Le modificateur de format supprime tout rembourrage de début et/ou de fin qui pourrait être inclus dans le résultat. Par exemple, lorsque le nombre est négatif, un signe moins est préfixé. Mais lorsque le nombre est positif, aucun signe n'est inclus et un espace apparaît à la place du signe plus.

Voici un exemple pour illustrer cela :

SELECT 
    TO_CHAR(-7, '000') AS "Minus Sign",
    TO_CHAR(7, '000') AS "Padded",
    TO_CHAR(7, 'fm000') AS "Not Padded";

Résultat :

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

Le LPAD() Fonction

Nous pouvons alternativement utiliser le LPAD() fonction pour remplir les nombres avec des zéros non significatifs :

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

Résultat :

007

Autre exemple :

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

Résultat :

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

Notez que cette fonction nécessite que le nombre soit passé sous forme de chaîne. Par conséquent, nous devons d'abord convertir le nombre en une chaîne. Le caractère de remplissage doit également être une chaîne.

Nous devrons donc peut-être faire quelque chose comme ceci :

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

Résultat :

007

L'un des avantages que LPAD() a sur la méthode précédente est que nous pouvons préfixer le résultat d'autres caractères - il n'a pas besoin d'être un zéro non significatif.

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

Résultat :

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