【问题标题】:How to extract first number after decimal point in value如何提取值小数点后的第一个数字
【发布时间】:2019-07-12 02:21:28
【问题描述】:

我有一个年龄列,用于​​计算报告中每个成员的年龄。输出是一个整数,后跟一个小数点和数字。我只想要小数点后的第一个数字。

我尝试了 trunc,但它给了我小数点前的所有内容,然后是我想要的数字。然后我尝试用逗号进行截断,但它不起作用。

trunc(年龄,',')

示例 -

15.7 岁

预期输出 7

【问题讨论】:

    标签: sql oracle numbers decimal truncate


    【解决方案1】:

    这里是数学答案

    • 通过在整个部分(截断)后加上小数部分。

    • 乘以10取整部分

    .

    with age as (select 15.7231 age from dual)
    select trunc(10*(age-trunc(age))) dp1  from age
    
           DP1
    ----------
             7
    

    【讨论】:

      【解决方案2】:

      尝试如下

      select substr(to_char(15.7,'9999.0'),-1,1) as col from dual
       it will return 7
      

      【讨论】:

      • 非常感谢它的工作。通过语句,我能够得到我想要的数字 substr(to_char(popu.age,'9999.0'),-1,1)。
      • 这对于15.75不起作用,因为它返回四舍五入的数字8
      【解决方案3】:

      乘以 10,将其截断并除以 10 的余数。

      with age as (select 15.7231 age from dual)
      select mod(trunc(10*age), 10) dp from age
      

      输出:

      DP
      --
       7
      

      【讨论】:

        猜你喜欢
        • 2017-08-31
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        相关资源
        最近更新 更多