mysql有坐标类型吗_MySql使用Float数据类型来存储地理坐标

bd96500e110b49cbb3cd949968f18be7.png

I have a table that stores longitude and latitude coordinates (google maps) i have the columns defined as float however when i try to insert a value -61.45859899999999 and 10.28289 they are being rounded off to -61.46 and 10.30. How can i modify the columns to hold the data as is.

I am using mysql toad. Under is the code for the table:

CREATE TABLE `tblGeoCodes` (

`recNo` int(11) NOT NULL AUTO_INCREMENT,

`longLocation` float(30,2) DEFAULT NULL,

`latLocation` float(30,2) DEFAULT NULL

解决方案

There are two problems with your implementation.

The reason the values are both being rounded to 2 digits of precision is that you explicitly defined the scale as 2.

Also, FLOAT is an imprecise data type in MySQL.

To solve both problems you should use the DECIMAL data type with an appropriate precision and scale.

For example, something like this:

CREATE TABLE `tblGeoCodes` (

`recNo` int(11) NOT NULL AUTO_INCREMENT primary key,

`longLocation` decimal(18,14) DEFAULT NULL,

`latLocation` decimal(18,14) DEFAULT NULL

);

Example:

mysql> CREATE TABLE `tblGeoCodes` (

-> `recNo` int(11) NOT NULL AUTO_INCREMENT primary key,

-> `longLocation` decimal(18,14) DEFAULT NULL,

-> `latLocation` decimal(18,14) DEFAULT NULL

-> );

Query OK, 0 rows affected (0.02 sec)

mysql>

mysql> insert into tblGeoCodes (longLocation,latLocation) values(-61.45859899999999 , 10.28289);

Query OK, 1 row affected (0.00 sec)

mysql>

mysql> select * from tblGeoCodes;

+-------+--------------------+-------------------+

| recNo | longLocation | latLocation |

+-------+--------------------+-------------------+

| 1 | -61.45859899999999 | 10.28289000000000 |

+-------+--------------------+-------------------+

1 row in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值