oracle中 取小数部分函数

oracle中 给定一个数 取出小数部分 如:12.23 如何取出 23
不要小数点

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
--方法很多的,看你想怎么个实现方法。最好做成函数,通用一点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-05
select substr(12.23-floor(12.23),2,10) from dual;
优化的算法
select ltrim(12.55523-floor(12.55523),'0.') from dual;本回答被提问者和网友采纳
第2个回答  2018-08-21
select 12.23-trunc(12.23) from dual; --0.23
select ltrim(12.23-trunc(12.23),'0.') from dual; --23
第3个回答  2009-11-05
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
第4个回答  2020-03-20
说明:数字函数的输入参数和返回值都是数字类型,并且多数函数精确到38位。可以在sql语句中直接使用,也可以在pl/sql块中使用。
精确到36位的函数:
cos
cosh
exp
ln
log
sin
sinh
sqrt
tan
tanh
精确到30位的函数:
acos
asin
atan
atan2
相似回答