您的位置:首页 > 数据库 > Oracle

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

2012-01-10 10:18 525 查看
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数,则自动变成科学计数法(不光改变显示,改变了值),而使存储过程无法 计算下去,我怎么也找不到消去这种显示方式的地方,哪位兄弟知道啊?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: