MS Access改变了多个列

时间:2013-03-07 19:19:05

标签: ms-access alter-table

我有一个来自JDE / AS400的ODBC链接表,我将其引入MS Access 2010.该表有四个数据类型为十进制的字段,一旦我将它们写入一个数据类型,我需要转换为双数据类型临时表。是否有办法在一个查询中包含四个alter table / column语句?

如果有人想知道,存储在这些字段中的数据是价格和成本,但它们存储在ODBC表中作为15的十进制值,带有0个尾随小数,我必须将两个除以10,000和一个除以100,000获取正确位置的小数点以表示真实的价格/成本例如,价格字段中的3558767实际上是355.8767或355.88舍入的价格)。当我将相同的数据带入Access并除以10000时,我得到355.00。我需要正确的美分值。我过去唯一能做到这一点的方法是在执行除法之前编写一个alter table / alter column查询来将数据类型更改为double。

由于我有四个这样的字段,我想一次改变或修改所有四个字段。有什么想法吗?

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

在Access(或符合ANSI标准的SQL,据我所知)中没有办法同时更改多个列;你必须要么:

  • 运行四个单独的alter脚本,或者......
  • 创建一个新的临时表,将所有数据移动到临时表中,删除主表,然后重命名临时表

在这种情况下真的很流行,因为你将以任何一种方式运行四个脚本。

答案 1 :(得分:1)

如前所述,Access SQL不允许您使用单个SQL语句更改多个列。但是,您的问题中的背景信息有些令人困惑。

SELECT decimal_field/10^4 AS my_quotient
FROM tblFoo;

decimal_field是十进制类型,精度= 15,比例= 0。

当我将3558767存储到decimal_field并运行该查询时,Access 2007会将355.8767作为my_quotient。这就是我理解你想要但却没有得到的结果。

如果您可以对其进行排序,也许您不需要更改任何列。