用逗号将字符串拆分为单独的列

时间:2019-05-05 15:16:53

标签: mysql

我正在尝试将坐标列拆分为各自的latlng

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

3 个答案:

答案 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字符串的结尾。

enter image description here

Demo

答案 2 :(得分:1)

您已经关闭。您只是忘记为第一个子字符串设置起始索引。

UPDATE `data`
    SET `lat` = TRIM(SUBSTR(`coordinates`,1,INSTR(`coordinates`,',')-1))
      , `lng` = TRIM(SUBSTR(`coordinates`,INSTR(`coordinates`,',')+1));