我将latlon数据存储在单个varchar中,例如" 51.51087974,-0.11101941"我想将其转换为POINT空间值。当值在单独的浮点数中时,我可以使用例如
UPDATE myTable SET coords = GeometryFromText( CONCAT( 'POINT(', lon, ' ', lat, ')' ) );
我显然可以用空格替换我的值中的逗号以获取POINT数据,但是lat和lon则是错误的方法。我确定这一定是一项常见的操作,但对我来说,生活似乎无法找到解决方案!
答案 0 :(得分:1)
您可以使用mysql的substring_index()函数来解析坐标数据:
在计数出现之前,从字符串str返回子字符串 分隔符delim。如果计数是正数,那么一切都在左边 返回最终分隔符(从左边开始计数)。如果算数是 否定,最终分隔符右侧的所有内容(计数 从右边)返回。 SUBSTRING_INDEX()执行一个 搜索delim时区分大小写匹配。
UPDATE myTable
SET coords = GeometryFromText( CONCAT( 'POINT(', substring_index(coord_field, ',',-1), ' ', substring_index(coord_field, ',',1), ')' ) );