sql >> Database teknologi >  >> RDS >> PostgreSQL

2 måder at tilføje førende nuller i PostgreSQL

I PostgreSQL kan vi bruge TO_CHAR() funktion til at tilføje indledende nuller til et tal. Funktionen konverterer tallet til en streng ved at bruge det (valgfrie) format, vi angiver.

En anden mulighed er at bruge LPAD() funktion til at udfylde et tal med indledende nuller.

TO_CHAR() Funktion

Når du bruger TO_CHAR() funktion, skal du bruge 0 formatelement for at inkludere foranstillede og/eller efterfølgende nuller.

Eksempel:

SELECT TO_CHAR(7, 'fm000');

Resultat:

007

Her er den sammenlignet med 9 formatelement:

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

Resultat:

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

Antallet af foranstillede nuller bestemmes af antallet af 0 formatelementer og antallet af cifre i tallet:

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

Resultat:

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

fm formatmodifikator undertrykker enhver førende og/eller efterfølgende polstring, der kan være inkluderet i resultatet. For eksempel, når tallet er negativt, er et minustegn foran. Men når tallet er positivt, er der intet tegn med, og der vises et mellemrum, hvor plustegnet ville have været.

Her er et eksempel til at demonstrere dette:

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

Resultat:

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

LPAD() Funktion

Vi kan alternativt bruge LPAD() funktion til at udfylde tal med indledende nuller:

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

Resultat:

007

Et andet eksempel:

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

Resultat:

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

Bemærk, at denne funktion kræver, at tallet sendes som en streng. Derfor skal vi først konvertere tallet til en streng. Udfyldningstegnet skal også være en streng.

Så vi bliver måske nødt til at gøre sådan noget:

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

Resultat:

007

En af fordelene ved LPAD() har i forhold til den tidligere metode er, at vi kan præfikse resultatet andre tegn - det behøver ikke at være et foranstillet nul.

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

Resultat:

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

  1. Forståelse af SQL Server Always Encrypted

  2. Langsom LEFT JOIN på CTE med tidsintervaller

  3. Liste over områder, der understøttes af Oracle-databasen

  4. Opret et SQL Server Agent Job ved hjælp af SSMS