0

我在一个数据库中有一张表,称之为 db x。我有另一个数据库,称之为 y。我想将数据从 x.some_table 复制到 y.some_table。我不想做一个精确的表副本,因为有些列在数据库 b 中没有意义。我使用以下查询:

INSERT INTO y.some_table (a_field) SELECT a_field FROM x.some_table;

两个表中的 a_filed 都定义为 DOULBE(17,0)。如果我运行这个:使用 y; 从 x 中选择一个字段;

然后我得到完整值的输出——没有浮点截断。但是,如果在使用我显示的第一个查询插入后,我只会在 y 的 some_table.a_field 中得到整数。浮点余数被截断。

我究竟做错了什么?谢谢。

4

2 回答 2

1

您确定该列在两个表中都定义为 DOUBLE(17,0) 吗?那不是指定了 17 个总位数,小数点后为 0 吗?如果是这样,您从表 x 中选择也应该有 0 个小数位。如果它在 x 中的定义不同,说 DOUBLE(17,6) 并且您试图将其插入 DOUBLE(17,0) 中,那么我相信小数会被截断。

于 2009-10-07T16:00:40.233 回答
0

不确定是什么导致截断..您可以确保正确设置浮动类型..如果您认为您的表定义没问题,您可以创建一个脚本来测试它,例如,在 PHP 中您可以执行以下操作 -

$sql = "SELECT your_select_field FROM your_table";
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {
   $sql_ins = "INSERT INTO your_insert_table SET your_field = '".$row['your_select_field']."' ";
   $res_ins = mysql_query($sql_ins);
}
于 2009-10-07T16:03:36.293 回答