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

Oracle SQL - кръгъл - половината

Документацията ви показва използвания алгоритъм :

Така че можете да промените положителната, ненулевата версия:

FLOOR(n * POWER(10, integer) + 0.4) * POWER(10, -integer)
                                 ^

напр. за фиксирано закръгляване и игнориране на нули/отрицателни засега:

with t (my_number) as (
  select 3.674 from dual
  union all select 3.675 from dual
  union all select 3.676 from dual
)
select my_number,
  floor(my_number * power(10, 2) + 0.4) * power(10, -2) as round_on_number
from  t;

 MY_NUMBER ROUND_ON_NUMBER
---------- ---------------
     3.674            3.67
     3.675            3.67
     3.676            3.68

Можете да включите нула/отрицателно чрез израз за регистър; или напишете своя собствена функция, за да я обработвате по-прецизно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въвеждането на SQL за намиране на човек има най-много кучета

  2. Еквивалент на COLLATE без значение на главните и главните букви в Oracle

  3. Динамично разделяне на таблици в Oracle

  4. Как да затворя принудително връзка от група връзки, когато затварянето отнема твърде много време?

  5. Създаване на DDL за базова линия за пътека