【发布时间】:2019-07-12 02:21:28
【问题描述】:
我有一个年龄列,用于计算报告中每个成员的年龄。输出是一个整数,后跟一个小数点和数字。我只想要小数点后的第一个数字。
我尝试了 trunc,但它给了我小数点前的所有内容,然后是我想要的数字。然后我尝试用逗号进行截断,但它不起作用。
trunc(年龄,',')
示例 -
15.7 岁
预期输出 7
【问题讨论】:
标签: sql oracle numbers decimal truncate
我有一个年龄列,用于计算报告中每个成员的年龄。输出是一个整数,后跟一个小数点和数字。我只想要小数点后的第一个数字。
我尝试了 trunc,但它给了我小数点前的所有内容,然后是我想要的数字。然后我尝试用逗号进行截断,但它不起作用。
trunc(年龄,',')
示例 -
15.7 岁
预期输出 7
【问题讨论】:
标签: sql oracle numbers decimal truncate
这里是数学答案
通过在整个部分(截断)后加上小数部分。
乘以10取整部分
.
with age as (select 15.7231 age from dual)
select trunc(10*(age-trunc(age))) dp1 from age
DP1
----------
7
【讨论】:
尝试如下
select substr(to_char(15.7,'9999.0'),-1,1) as col from dual
it will return 7
【讨论】:
15.75不起作用,因为它返回四舍五入的数字8。
乘以 10,将其截断并除以 10 的余数。
with age as (select 15.7231 age from dual)
select mod(trunc(10*age), 10) dp from age
输出:
DP
--
7
【讨论】: