【发布时间】:2014-01-17 14:47:59
【问题描述】:
我在 Oracle 中有一个表,例如:
create table TEST (num number(7,2))
我想像这样在该表中插入一个整数:
insert into TEST (num) values (5555522)
我正在寻找一种将整数“5555522”自动转换为 number(5,2) 值的方法,以便记录包含 55555.22 而不是 55555。是否有某种类似“setscale(5555522, 2)”的函数只是将最后 2 个数字解释为小数位?
我已经检查了 Oracle 文档中的 to_number() Funktion。但它需要一个格式正确的输入字符串,如 to_number('55555.22', 99999D99) 这不适合我的情况。
【问题讨论】:
-
555552 怎么样 -> 如果我猜对了,您希望它为 55555.2 还是 5555.52 ?仅针对这些复杂情况,没有任何内置功能可以解决此问题。
-
是的,如果我使用 555552 那么它应该转换为 5555.52
-
如果是这样除以 100,请按照下面的答案中所述干净地完成工作。但请确保,如果数字少于 2 位小数,则在末尾附加零。
-
在此之前,请确保您有足够的空间来存储号码。在您的示例中,您采用数据类型 number(5,2) 并想要插入 55555.22,oracle 不允许这样做。 number(5,2) 表示总长度为 5,包括 2 个精度。
-
@some_coder
number(5,2)列中可以容纳的最大值是999.99。
标签: oracle numbers integer type-conversion