现在的位置: 首页 > 综合 > 正文

为什么oracle的number(19)类型数据用科学计数法表示,并且自动从16位截掉?

2018年04月01日 ⁄ 综合 ⁄ 共 877字 ⁄ 字号 评论关闭
reference:http://www.itpub.net/290118.html

question:
为什么oracle的number(19)类型数据用科学计数法表示,并且自动从16位截掉?

我通过oracle migration workbeach 从sqlserver中导入库到oracle,bigint类型自动映射成了number(19),我发现1234567890123456789自动会 存储为1.23456789012346E19,在toad中加大number(19)到number(38),亦是从16位截断?
后来用update sql语句时发现系统还是可以存储为1234567890123456789,只是在toad工具里,pl/sql工具里,以及oracle migration workbeach转换时,这些工具自动解析存为16位截断的科学计数法方式的数据了,
问题一:bigint应该转换为number(19)吗
问题二:toad或pl/sql中有地方设置不从16位截断吗
问题三:原来的数据该怎么找回来?

answer:

原来是oracle migration workbeach在转换过程中自动将大数用科学记数法的方式表示,因此改变了许多大数的真正值。

而toad和pl/sql developer中也默认将大数显示为科学计数法方式,极为不便。
在toad中->view->option->data->display large number in scientific notation,不选择该选项即可
在pl/sql developer中->tools->preferences->sql windows->number fields tochar,选中该选项即可。

但我又遇到了一个问题,在pl/sql developer的test windows中,测试存储过程时,test window下方的方格(即存储过程的各个参数),这里若录入一个大number数,则自动变成科学计数法(不光改变显示,改变了值),而使存储过程无法 计算下去,我怎么也找不到消去这种显示方式的地方,哪位兄弟知道啊?

抱歉!评论已关闭.