从小数位后最高位数的列中选择值

时间:2016-09-20 03:39:55

标签: sql oracle

我有下面的表名为SAXTION_EG,此表包含各种colulms,其中有一列名为STR_RATE,在此列中包含值

  STR_RATE
  1.11317
  123.08546759
  8.49111

现在请告诉我oracle查询,我可以通过它查询小数点的最大值,例如在上面提到的情况下,值123.08546759具有最高的十进制数,所以它在小数点后有8位数,因为我的目标是获取十进制

后具有最高位数的值

3 个答案:

答案 0 :(得分:0)

你可以试试这样的事情。逻辑首先得到小数点的位置。然后获取小数点后的字符串。在那之后计算该子串中的字符数。然后使用MAX获取聚合的最大值

SELECT MAX(LENGTH(SUBSTR(STR_RATE, INSTR(STR_RATE, '.')+ 1)))
FROM your_table

答案 1 :(得分:0)

在下面的解决方案中,我假设str_rate的数据类型为NUMBER,因此必须先将其转换为字符。我添加了几个示例值来检查是否正确处理了整数值,并说明了两个值具有相同的最大小数位数的情况。在这种情况下,解决方案返回这两个值(参见底部的结果集)。

{{1}}

答案 2 :(得分:0)

此查询以小数点的形式返回最大值:

select max(STR_RATE) keep (dense_rank last order by length(STR_RATE-trunc(STR_RATE)))
from SAXTION_EG