0 votes

mysql insert nested select from other db truncates double values

J'ai une table dans une base de données, appelée db x. J'ai une autre base de données, appelée y. Je veux copier les données de x.some_table vers y.some_table. Je ne veux pas faire une copie exacte de la table, car certaines colonnes n'ont pas de sens dans la base de données b. J'utilise la requête suivante :

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

a_filed dans les deux tables est défini comme DOULBE(17,0). Si j'exécute ceci : USE y ; SELECT a_field FROM x ;

J'obtiens alors une sortie avec des valeurs complètes - pas de troncature en virgule flottante. Cependant, si après l'insertion en utilisant la première requête que j'ai montrée, je n'obtiens rien d'autre que des nombres entiers dans le champ some_table.a_field de y. Les restes en virgule flottante sont tronqués.

Qu'est-ce que je fais de mal ? Merci.

1voto

Gratzy Points 4829

Êtes-vous sûr que la colonne est définie comme DOUBLE(17,0) dans les deux tables ? Cela ne spécifie-t-il pas un total de 17 chiffres avec un 0 après la décimale ? Si c'est le cas, votre sélection dans la table x devrait également avoir 0 décimale. Si elle est définie différemment dans x, par exemple DOUBLE(17,6), et que vous essayez de l'insérer dans DOUBLE(17,0), les décimales seront tronquées, je pense.

0voto

HappyApe Points 5392

Je ne suis pas sûr de ce qui cause la troncature vous pouvez vous assurer que vous avez correctement défini le type flottant si vous pensez que votre définition de table est OK, vous pouvez créer un script pour le tester par exemple, en PHP, vous pourriez faire quelque chose comme -

$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);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X