select 12.23-ceil(12.23) from dual
--结果 -0.77
select substr(12.23-floor(12.23),2,10) from dual;
--这个东西做不到通用没什么价值
--如果
select substr(12.231111111111111-floor(12.231111111111111),2,10) from dual;
--结果不会是231111111111111,而是2311111111
select ltrim(0.55523-floor(0.55523),'0.') from dual;
--这个比较有代表性
--1
select substr(12.25,instr(12.25,'.')+1,length(12.25)) from dual;
--结果 25
--2
select A.a*power(10,length(A.a)-1) from
(select trunc(12.25333,length(12.25333))-trunc(12.25333,0) a from dual) A
--结果 25333
--方法很多的,看你想怎么个实现方法。最好做成函数,通用一点。
select substr(12.23-floor(12.23),2,10) from dual;
优化的算法
select ltrim(12.55523-floor(12.55523),'0.') from dual;
select 12.23-trunc(12.23) from dual; --0.23
select ltrim(12.23-trunc(12.23),'0.') from dual; --23
select A.a*power(10,length(A.a)-1) from
(select trunc(12.25,length(12.25))-trunc(12.25,0) a from dual) A
说明:数字函数的输入参数和返回值都是数字类型,并且多数函数精确到38位。可以在sql语句中直接使用,也可以在pl/sql块中使用。
精确到36位的函数:
cos
cosh
exp
ln
log
sin
sinh
sqrt
tan
tanh
精确到30位的函数:
acos
asin
atan
atan2