sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL - Rund - Halv

Dokumentationen visar dig vilken algoritm som används :

Så du kan ändra den positiva versionen som inte är noll:

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

t.ex. för en fast avrundning, och ignorera nollor/negativ för nu:

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

Du kan inkludera noll/negativ via ett kasusuttryck; eller skriv din egen funktion för att hantera den snyggare.



  1. Oracle ODP.NET-anslutningssträng:vad finns i datakällan?

  2. Det gick inte att initiera leverantören. Saknat eller felaktigt schema

  3. Hive 1.2 Metastore Service startar inte efter att ha konfigurerat den till S3-lagring istället för HDFS

  4. Mysql heltals standardvärde 0