sql >> Database >  >> RDS >> Oracle

2 manieren om een ​​getal op te maken met voorloopnullen in Oracle

Als we Oracle Database gebruiken om een ​​getal op te maken met voorloopnullen, moeten we het converteren naar een tekenreeks en het dienovereenkomstig opmaken.

U kunt de TO_CHAR(number) . gebruiken functie om getallen op te maken met voorloopnullen.

En misschien een minder bekend feit, is dat je ook de LPAD() . kunt gebruiken functie om een ​​getal met voorloopnullen op te vullen.

De TO_CHAR() Functie

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

Voorbeeld:

SELECT TO_CHAR(7, 'fm000')
FROM DUAL;

Resultaat:

007

Hier is het vergeleken met de 9 formaatelement:

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

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

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

Resultaat:

   Minus Sign    Padded    Not Padded 
_____________ _________ _____________ 
-007           007      007          

De LPAD() Functie

We kunnen ook de LPAD() . gebruiken functie om getallen op te maken met voorloopnullen.

Voorbeeld:

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

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

Resultaat:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     00077    00777    07777    77777   

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

Resultaat:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     ...77    ..777    .7777    77777   

  1. Negatieve waarden opmaken met haakjes in SQL Server (T-SQL)

  2. Hoe specificeer je de IN-component in een dynamische query met behulp van een variabele?

  3. Gegevenswijzigingen onder Read Committed Snapshot Isolation

  4. MySQL:is een SELECT-instructie hoofdlettergevoelig?