0

1 つのデータベースにテーブルがあり、これを 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) として定義されています。これを実行すると: USE y; x から a_field を選択します。

次に、完全な値で出力を取得します-浮動小数点の切り捨てはありません。ただし、最初に示したクエリを使用して挿入した後、y の some_table.a_field に整数しか得られない場合。浮動小数点の残りは切り捨てられます。

私は何を間違っていますか?ありがとう。

4

2 に答える 2

1

列が両方のテーブルで DOUBLE(17,0) として定義されていることを確認してください。小数点以下0で合計17桁じゃないの?その場合、テーブル 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 に答える