Oracle
 sql >> база данни >  >> RDS >> Oracle

2 начина за форматиране на число с водещи нули в Oracle

Когато използваме Oracle Database за форматиране на число, така че да има водещи нули, трябва да го преобразуваме в низ и да го форматираме съответно.

Можете да използвате TO_CHAR(number) функция за форматиране на числа с водещи нули.

И може би по-малко известен факт е, че можете да използвате и LPAD() функция за допълване на число с водещи нули.

TO_CHAR() Функция

Когато използвате TO_CHAR(number) функция, използвайте 0 форматен елемент, за да включва начални и/или крайни нули.

Пример:

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

Резултат:

007

Ето го в сравнение с 9 форматен елемент:

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

Резултат:

   9      0 
____ ______ 
7    007   

Броят на водещите нули се определя от броя на 0 форматни елементи и броя на цифрите в числото:

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;

Резултат:

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

fm модификаторът на формат потиска всички водещи и/или крайни запълвания, които могат да бъдат включени в резултата. Например, когато числото е отрицателно, се поставя знак минус. Но когато числото е положително, не се включва знак и се появява интервал, където би бил знакът плюс.

Ето пример за демонстриране на това:

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

Резултат:

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

LPAD() Функция

Като алтернатива можем да използваме LPAD() функция за форматиране на числа с водещи нули.

Пример:

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

Резултат:

007

Друг пример:

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;

Резултат:

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

Едно от предимствата на LPAD() има над предишния метод е, че можем да поставим пред резултата други знаци – не е необходимо да е водеща нула.

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;

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете стойност от FieldA, изпратете към функцията db, върнете стойността към FieldB

  2. java.lang.ClassCastException:oracle.sql.TIMESTAMP не може да бъде прехвърлен към java.sql.Timestamp

  3. таблица или изглед на oracle не съществуват от вътрешната съхранена процедура

  4. Динамичен SQL LOOP

  5. Транспониране на избраните резултати с Oracle