我正在尝试一个简单的转换 - 一个包含经度值(例如“-1.234”到-1.234)的mysql varchar列以增强优化。MySQL varchar编号
我已阅读并在此阅读并没有什么作品,上次尝试是:
UPDATE latlng_data SET lng_copy = CAST(lng AS DECIMAL(6,4));
会见了:
Error Code: 1366. Incorrect decimal value: '' for column '' at row -1
目标列,创造了从错误中恢复是:
FLOAT(6,4)
and null allowed.
为什么mysql错误消息如此无用。
继“dognose的意见(下)我已经使用:
UPDATE latlng_data SET lng='999.9999' where lng='';-- to give invalid lng in this case
再增加拷贝数据字段(其目的是将其重命名原稿),然后:
UPDATE latlng_data SET lng_copy = CAST(lng AS DECIMAL(7,4));
这似乎在MySQL cmd中作为Workbench超时需要,但使用:
show full processlist;
仍然显示它正在运行 - 所以在这里最好的显示器是CMD。
'CAST( ' - 1.234' 为十进制(6,4 ))' 在我的最后工作得很好,确保lng_copy中的所有值都有值,并且可以转换为十进制(6,4),看起来像@JasonSec所说的“ – JasonSec
”。请参阅:http://dev.mysql.com/doc/refman/5.6/en/cast-functions.html可能的欺骗:http://stackoverflow.com/questions/18705119/mysql-how-to-convert-varchar-纬度 - 经度到小数位字段 –
'UPDATE latlng_data SET lng_copy = lng * 1' * ...隐藏* – dognose