mysql - 将经纬度文本列移动到 'point' 类型的列中

标签 mysql latitude-longitude point

我的 MySQL 数据库中有一个名为 house 的表。

house 表中,有几个名为 latitudelongitude 的文本列。

我添加了一个名为 coords 的新列,类型为 point - http://dev.mysql.com/doc/refman/5.0/en/gis-class-point.html

如何将 latitudelongitude 值移动到新的 coords 列中?

最佳答案

假设您希望在此列上有一个 SPATIAL 索引:

ALTER TABLE mytable ADD coords Point;

UPDATE  mytable
SET     coords = Point(lon, lat);

ALTER TABLE mytable MODIFY coords POINT NOT NULL;

CREATE SPATIAL INDEX sx_mytable_coords ON mytable(coords);

如果你不这样做,你可以省略最后两个步骤。

更新:

在早期版本的 MySQL 中,您需要使用 WKT 填充 Point 列:

UPDATE  mytable
SET     coords = GeomFromText(CONCAT('POINT (', lon, ' ', lat, ')'))

关于mysql - 将经纬度文本列移动到 'point' 类型的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5756232/

相关文章:

Java 效率 - 点与坐标

mysql - 处于一对一关系的父实体和子实体

sql - 如何在 MySQL 中强制执行复合唯一性?

具有确切结果的sql选择

c++ - 给定一对 (lat,long) 和偏移纬度找到经度

r - 如何计算R中单独dfs的位置之间的距离

c - 使用指针从另一个函数打印字符串

Mysql查询显示年龄超过特定年龄的人

algorithm - 寻找球体上最近的一对点

javascript - 如何在二维中心点周围放置点?