如何计算oracle pl/sql中数字的位数?

Posted

技术标签:

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

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

【问题讨论】:

整数,或者您可能也必须处理小数 - 如果是这样,您将如何计算这些? 如果你说明为什么你需要长度会很有帮助。例如是否用于计算格式化显示或存储所需的字符数(例如在文本文件中)? 【参考方案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 时的情况;

【讨论】:

以上是关于如何计算oracle pl/sql中数字的位数?的主要内容,如果未能解决你的问题,请参考以下文章

oracle pl/sql 数组

Oracle pl/sql forall:如何计算表空间已满(1654)错误的实际插入行数

在 Oracle PL/SQL 中生成字母数字序列

pl/sql developer连接成功无效

Oracle PL/SQL,如何使用简单的替换变量和months_between计算出生日期的年龄

oracle sql语句中,有没有能够将结果集中数字替换成汉字的函数?