我正在尝试将坐标列拆分为各自的lat
和lng
列
在coordinates
列中,我有这些
-74.93360137939453, 40.07080078125
-101.473911, 38.704022
-151.695999146, 59.94919968
但是当我运行下面的代码时,
UPDATE `data`
SET `lat` = TRIM(SUBSTR(`coordinates`,INSTR(`coordinates`,',')-1))
, `lng` = TRIM(SUBSTR(`coordinates`,INSTR(`coordinates`,',')+1));
将其添加到这样的列
3, 40.07080078125 | 40.07080078125
1, 38.704022 | 38.704022
6, 59.94919968 | 59.94919968
答案 0 :(得分:2)
尝试substring_index
set /?
答案 1 :(得分:1)
我会在这里使用SUBSTRING_INDEX
,但是如果您想继续使用当前的方法,请尝试以下操作:
UPDATE data
SET
lat = SUBSTRING(coordinates, 1, INSTR(coordinates, ',') - 1),
lng = SUBSTRING(coordinates, INSTR(coordinates, ',') + 2);
您对经度的更新分配不正确。您想要的逻辑是开始在逗号后的两个位置开始使用子字符串,直到coordinates
字符串的结尾。
答案 2 :(得分:1)
您已经关闭。您只是忘记为第一个子字符串设置起始索引。
UPDATE `data`
SET `lat` = TRIM(SUBSTR(`coordinates`,1,INSTR(`coordinates`,',')-1))
, `lng` = TRIM(SUBSTR(`coordinates`,INSTR(`coordinates`,',')+1));