J'essaie une conversion simple - une colonne mysql varchar qui contient des valeurs de longitude (par exemple "-1.234" à -1.234) pour améliorer l'optimisation.MySQL varchar au numéro
J'ai lu et lu à ce sujet et rien ne fonctionne, la dernière tentative était:
UPDATE latlng_data SET lng_copy = CAST(lng AS DECIMAL(6,4));
rencontré:
Error Code: 1366. Incorrect decimal value: '' for column '' at row -1
colonne cible, créée pour récupérer les erreurs est:
FLOAT(6,4)
and null allowed.
Pourquoi les messages d'erreur mysql sont-ils si inutiles?
Après 'Dognose' avis (ci-dessous) J'ai utilisé:
UPDATE latlng_data SET lng='999.9999' where lng='';-- to give invalid lng in this case
augmentent alors le champ de données de copie (dans le but de le renommer Orig) puis:
UPDATE latlng_data SET lng_copy = CAST(lng AS DECIMAL(7,4));
cela semble être nécessaire dans MySQL Workbench cmd timesout mais en utilisant:
show full processlist;
il montre encore que la course - alors voici le meilleur moniteur est cmd.
'CAST ('- 1.234' AS décimal (6,4)) ' Fonctionne très bien sur mon extrémité s'assurer que toutes les valeurs dans lng_copy ont des valeurs et peuvent convertir en décimal (6,4) ressemble proprement à l'un d'eux est '' – JasonSec
comme dit @JasonSec. voir: http://dev.mysql.com/doc/refman/5.6/fr/cast-functions.html Dupe possible: http://stackoverflow.com/questions/18705119/mysql-how-to-convert-varchar- latitude-longitude-à-décimal-champs –
'UPDATE latlng_data SET lng_copy = lng * 1' * ...cache – dognose