【发布时间】:2013-08-20 19:55:46
【问题描述】:
我在 X 和 to_number 和 to_char 中使用的 X number format element 遇到了一个特殊限制,当时我是 converting hexadecimal numbers to decimal numbers。
看起来数字格式模型的最大长度为 63 个字符,但我找不到 the docs 中提到的限制。例如。提到了日期时间格式模型的最大长度:
日期时间格式模型的总长度不能超过 22 个字符。
有 63 个Xes:
SQL> select to_number('A', rpad('X', 63, 'X')) from dual;
TO_NUMBER('A',RPAD('X',63,'X'))
-------------------------------
10
有 64 个Xes:
SQL> select to_number('A', rpad('X', 64, 'X')) from dual;
select to_number('A', rpad('X', 64, 'X')) from dual
*
ERROR at line 1:
ORA-01481: invalid number format model
我只尝试了X 格式元素,因为它与我当前的任务相关。
问题:
- 这是文档中缺少的已知数字格式模型限制吗?
- 如何将 64(及更长)位长度的十六进制数转换为十进制数?
【问题讨论】:
-
这种转换的目的是什么?用数值做一些算术运算还是只存储和显示?
-
@ThinkJet 这是从 90 年代中期开始运行的第 3 方传统硬件设备的数据加载。新版本引入了这些更大的十六进制字段。转换已经完成,因为它总是完成 - 这里没有人知道为什么。在清理了一些尘土飞扬的角落后,我们意识到终端系统不再使用这个特定的性能指标,所以我们可以放弃它(真是一种解脱)。看起来指标的用途在某些时候发生了变化,它包含几个必须单独解码的段,但没有人告诉我们。哦,维护程序员的乐趣!