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

4 начина за форматиране на число без десетични знаци в Oracle

Когато използвате Oracle Database, можете да използвате функции като TO_CHAR(number) за връщане на числа като низ. Това ви позволява да форматирате числото така, че да има определен брой десетични знаци – включително без десетични знаци, ако искате това.

Можете също да използвате функции като ROUND(number) и TRUNC(number) за да закръглите или съкратите числото без десетични знаци.

Има и CAST() функция, която ви позволява да прехвърляте тип данни като цяло число, което ефективно премахва всички десетични знаци.

TO_CHAR() Функция

Ето пример, който използва TO_CHAR(number) функция:

SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;

Резултат:

1,235

В този случай моят форматен модел се състои от:

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

Важното, което трябва да се отбележи, е, че не използва D форматен елемент, който е десетичният знак, който знае за формат. Нито използва никакви буквални десетични знаци (като запетая или точка). И тъй като няма десетични знаци, очевидно няма цифри след такъв знак.

Ако направихме имат десетичен знак, произволен 9 или 0 елементите вдясно от него могат да доведат до включване на десетичните знаци в резултата.

Пример:

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

Резултат:

7.00

За да потиснем крайните нули, можем да променим 0 символи до 9 с. Въпреки това, премахването на fm модификаторът може да доведе до появата на крайни нули дори при използване на 9 форматен елемент.

Ето сравнение, за да илюстрирам какво имам предвид:

SELECT 
    TO_CHAR(7, 'fm99D00') AS "r1",
    TO_CHAR(7, 'fm99D99') AS "r2",
    TO_CHAR(7, '99D99') AS "r3"
FROM DUAL;

Резултат:

     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

ROUND() Функция

Ето пример, който използва ROUND(number) функция:

SELECT ROUND(1234.56, 0)
FROM DUAL;

Резултат:

1,235

ROUND() функцията закръглява число до даден десетичен знак. Тук сме посочили нула десетични знака, което премахва всички десетични знаци от числото.

В този случай числото е закръглено нагоре.

TRUNC() Функция

Ето пример, който използва TRUNC(number) функция:

SELECT TRUNC(1234.56, 0)
FROM DUAL;

Резултат:

1234

TRUNC() функцията съкращава число до даден десетичен знак. Не се получава закръгляване. Следователно това число беше съкратено до нула знака след десетичната запетая, без закръгляване.

CAST() Функция

Ето пример, който използва CAST() функция:

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Резултат:

1,235

CAST() функцията преобразува своя аргумент в различен тип данни. В този случай преобразувахме числото в цяло число. Целите числа нямат десетични знаци и така всички дробни части се премахват от резултата (включително десетичния знак). Имайте предвид, че резултатът е закръглен.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:Дни между две дати и Изключване на дни от седмицата как да се справят с отрицателните числа

  2. TNSPING ОК, но sqlplus дава ORA-12154?

  3. Как да създадете PL/SQL функция в базата данни на Oracle

  4. Oracle PL/SQL:Пример DBMS_SCHEDULER.CREATE_JOB

  5. Как да вмъкнете колона в конкретна позиция в оракул, без да изпускате и пресъздавате таблицата?