【问题标题】:Convert Integer Into Number(p,s) During Insert在插入期间将整数转换为数字(p,s)
【发布时间】: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


【解决方案1】:

在你除以 100 之后,Oracle 应该隐含地为你做这件事:

insert into TEST (num) values (5555522/100)

编辑:就像你说的,它不适合,你需要改变你的桌子才能做到:

create table TEST (num number(7,2))

【讨论】:

  • 这仍然不适合数字(5,2)列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 2022-08-20
相关资源
最近更新 更多