sql >> Databáze >  >> RDS >> Oracle

2 způsoby formátování čísla s úvodními nulami v Oracle

Když používáme Oracle Database k formátování čísla tak, aby mělo úvodní nuly, musíme ho převést na řetězec a podle toho ho naformátovat.

Můžete použít TO_CHAR(number) funkce pro formátování čísel s úvodními nulami.

A možná méně známým faktem je, že můžete také použít LPAD() funkce pro doplnění čísla úvodními nulami.

TO_CHAR() Funkce

Při použití TO_CHAR(number) použijte 0 formátovací prvek tak, aby obsahoval úvodní a/nebo koncové nuly.

Příklad:

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

Výsledek:

007

Tady to je ve srovnání s 9 prvek formátu:

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

Výsledek:

   9      0 
____ ______ 
7    007   

Počet úvodních nul je určen číslem 0 prvky formátu a počet číslic v čísle:

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;

Výsledek:

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

fm Modifikátor formátu potlačuje veškeré počáteční a/nebo koncové odsazení, které by mohlo být zahrnuto ve výsledku. Například, když je číslo záporné, je předponou znaménko mínus. Ale když je číslo kladné, není zahrnuto žádné znaménko a na místě, kde by bylo znaménko plus, se objeví mezera.

Zde je příklad, který to demonstruje:

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

Výsledek:

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

LPAD() Funkce

Alternativně můžeme použít LPAD() funkce pro formátování čísel s úvodními nulami.

Příklad:

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

Výsledek:

007

Další příklad:

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;

Výsledek:

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

Jedna z výhod, kterou LPAD() oproti předchozí metodě je to, že před výsledkem můžeme uvést další znaky – nemusí to být úvodní nula.

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;

Výsledek:

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

  1. Jak UTC_DATE() funguje v MariaDB

  2. Pomozte nám modernizovat IDE v MS Access – váš hlas se počítá!

  3. Jak zakázat kontrolu cizího klíče v MySQL

  4. Jak použít MAX() na výsledek dílčího dotazu?