如何计算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 forall:如何计算表空间已满(1654)错误的实际插入行数