sql >> Database >  >> RDS >> PostgreSQL

2 manieren om voorloopnullen toe te voegen in PostgreSQL

In PostgreSQL kunnen we de TO_CHAR() . gebruiken functie om voorloopnullen aan een getal toe te voegen. De functie converteert het getal naar een tekenreeks, met behulp van het (optionele) formaat dat we specificeren.

Een andere optie is om de LPAD() . te gebruiken functie om een ​​getal met voorloopnullen op te vullen.

De TO_CHAR() Functie

Bij gebruik van de TO_CHAR() functie, gebruik de 0 format-element om voorloop- en/of volgnullen op te nemen.

Voorbeeld:

SELECT TO_CHAR(7, 'fm000');

Resultaat:

007

Hier is het vergeleken met de 9 formaatelement:

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

Resultaat:

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

Het aantal voorloopnullen wordt bepaald door het aantal 0 formaatelementen en het aantal cijfers in het getal:

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

Resultaat:

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

De fm format modifier onderdrukt alle voorloop- en/of volgopvulling die mogelijk in het resultaat is opgenomen. Als het getal bijvoorbeeld negatief is, wordt een minteken voorafgegaan. Maar als het getal positief is, wordt er geen teken opgenomen en verschijnt er een spatie waar het plusteken zou hebben gestaan.

Hier is een voorbeeld om dit aan te tonen:

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

Resultaat:

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

De LPAD() Functie

We kunnen ook de LPAD() . gebruiken functie om nummers met voorloopnullen in te vullen:

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

Resultaat:

007

Nog een voorbeeld:

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

Resultaat:

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

Merk op dat deze functie vereist dat het nummer als een string wordt doorgegeven. Daarom moeten we het getal eerst naar een tekenreeks converteren. Het opvulteken moet ook een tekenreeks zijn.

Dus misschien moeten we zoiets als dit doen:

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

Resultaat:

007

Een van de voordelen die LPAD() heeft ten opzichte van de vorige methode, is dat we het resultaat van andere tekens kunnen voorvoegen - het hoeft geen voorloopnul te zijn.

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

Resultaat:

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

  1. Wiskundige functies van SQL Server (volledige lijst)

  2. Hoe UNCOMPRESSED_LENGTH() werkt in MariaDB

  3. Gegevens importeren uit Excel-spreadsheet of CVS in MySQL

  4. SIN() Voorbeelden in SQL Server