Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改Oracle中的数字精度_Oracle_Precision - Fatal编程技术网

更改Oracle中的数字精度

更改Oracle中的数字精度,oracle,precision,Oracle,Precision,我还没有看到这个确切的问题。。。如果我错过了,我道歉 我有一个数据库,我从创建它的公司那里继承了它,当时他们把合同丢给了我的公司。现在,客户有一个“紧急”问题,需要更改值的精度。他们想把数字从10.3改为10.8;该字段在数据库中定义为10,3。在我对这个问题的研究中,似乎我必须做相当多的操作才能做到这一点,因为表格需要为空才能更改精度。我假设,即使默认值是10.38(或其他值),因为他们在创建时将其定义为10,3,如果我只是增加ColdFusion代码中的字段,当它保存时,它将截断为10,3?

我还没有看到这个确切的问题。。。如果我错过了,我道歉


我有一个数据库,我从创建它的公司那里继承了它,当时他们把合同丢给了我的公司。现在,客户有一个“紧急”问题,需要更改值的精度。他们想把数字从10.3改为10.8;该字段在数据库中定义为10,3。在我对这个问题的研究中,似乎我必须做相当多的操作才能做到这一点,因为表格需要为空才能更改精度。我假设,即使默认值是10.38(或其他值),因为他们在创建时将其定义为10,3,如果我只是增加ColdFusion代码中的字段,当它保存时,它将截断为10,3?更改包括捕获当前数据、删除数据、更改精度,然后重新加载数据,确保现有数据也已更改。是的,我知道没有详细说明,但希望能让大家明白这一点。谢谢。

处理此问题的最简单方法是重命名列,复制数据,然后删除原始列:

alter table EVAPP_FEES rename column AMOUNT to AMOUNT_OLD;

alter table EVAPP_FEES add AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_OLD;

alter table EVAPP_FEES drop column AMOUNT_OLD;


处理此问题的最简单方法是重命名列,复制数据,然后删除原始列:

alter table EVAPP_FEES rename column AMOUNT to AMOUNT_OLD;

alter table EVAPP_FEES add AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_OLD;

alter table EVAPP_FEES drop column AMOUNT_OLD;


您真的想从数字(10,3)更改为数字(10,8)?这将极大地限制字段中可以存储的数字范围——这正是为什么在列中有数据时不能这样做的原因


或者您的意思是要将小数位数从3增加到8,同时仍然允许相同的值的总体范围?如果是这样的话,那么我认为您希望将数字(10,3)更改为数字(15,8)-即使列包含数据,您也应该能够使用简单的ALTER来完成此操作。

您真的希望将数字(10,3)更改为数字(10,8)?这将极大地限制字段中可以存储的数字范围——这正是为什么在列中有数据时不能这样做的原因


或者您的意思是要将小数位数从3增加到8,同时仍然允许相同的值的总体范围?如果是这样的话,那么我认为您希望将数字(10,3)更改为数字(15,8)-即使列包含数据,您也应该能够使用简单的更改来完成此操作。

请看这里。同样的问题。很确定戴夫·科斯塔是对的,你想提高专栏的精确度和规模;你可能需要复习。看这里。同样的问题。很确定戴夫·科斯塔是对的,你想提高专栏的精确度和规模;您可能需要查看。是的,客户只需要小数点后8。我试图解释,结果被击落。与此同时,拥有比我更多最新技能的DBA将字段更新为没有大小指定的数字。这就解决了问题。嗯。。。它允许我将ColdFusion更改为小数点后有8。但是,当我试图保存它时,它会将其四舍五入,并在其后为5添加零。(即-123.12345678变为123.12300000)我遗漏了什么?我开始认为其他DBA所做的简单修复是导致我出现问题的原因。我是否需要明确声明10,8或15,8才能实现此功能?我已修复它。。。我忘了把3换成8<代码>嗯,我想我已经修好了。我在测试数据库中修复了Oracle中的数据类型,并更改了代码以确保小数点后有8位。它在我的开发系统上显示得很好。据我所知,开发和测试除了实际数据外是相同的。它在开发中起作用,但做了取整的事情,并使5个额外的数字为零。我见过的最奇怪的事情。是的,客户只想要小数点后的8。我试图解释,结果被击落。与此同时,拥有比我更多最新技能的DBA将字段更新为没有大小指定的数字。这就解决了问题。嗯。。。它允许我将ColdFusion更改为小数点后有8。但是,当我试图保存它时,它会将其四舍五入,并在其后为5添加零。(即-123.12345678变为123.12300000)我遗漏了什么?我开始认为其他DBA所做的简单修复是导致我出现问题的原因。我是否需要明确声明10,8或15,8才能实现此功能?我已修复它。。。我忘了把3换成8<代码>嗯,我想我已经修好了。我在测试数据库中修复了Oracle中的数据类型,并更改了代码以确保小数点后有8位。它在我的开发系统上显示得很好。据我所知,开发和测试除了实际数据外是相同的。它在开发中起作用,但做了取整的事情,并使5个额外的数字为零。我见过的最奇怪的事。