【问题标题】:How to count number of digits in a number in oracle pl/sql?如何计算oracle pl/sql中数字的位数?
【发布时间】:2014-04-09 15:33:49
【问题描述】:

我需要修改超过 5 位的数字。LENGTH 函数适用于字符串,但不适用于位数。应该如何计算数字中的位数?

【问题讨论】:

  • 整数,或者您可能也必须处理小数 - 如果是这样,您将如何计算这些?
  • 如果你说明为什么你需要长度会很有帮助。例如是否用于计算格式化显示或存储所需的字符数(例如在文本文件中)?

标签: plsql oracle11g


【解决方案1】:
select length(to_char(11111)) from dual

输出 5

【讨论】:

    【解决方案2】:

    length 很好,使用隐式或显式 to_char() 将数字转换为字符串,然后可以计算其字符,如 OldProgrammer 所示。

    如果你想把它当作一个数字,你也可以这样做:

    trunc(1/log(n, 10)) + 1
    

    ...适用于大于 2 的整数。但是对于以后尝试维护您的代码的人来说,这将不太直观...

    【讨论】:

    • 为什么建议做对数的逆转换?我建议一个更正确的版本:CASE WHEN TRUNC(n) = 0 THEN 1 ELSE FLOOR(log(10, ABS(TRUNC(n)))) +1 END
    【解决方案3】:

    什么时候不只是保持简单?

    当 mynumber >= 100000 THEN 时的情况;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-28
      • 2021-08-21
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2011-11-05
      相关资源
      最近更新 更多