拆分Mysql Location入2列?

时间:2014-08-29 01:41:49

标签: mysql sql string split location

是否有一种简单的方法可以采用纬度,经度格式的“位置”表格列,并将其拆分为纬度列和经度列?

select 
SUBSTRING_INDEX(`location`, ',', 1) AS latitude,
SUBSTRING_INDEX(SUBSTRING_INDEX(`location`, ',', 2), ',', -1) AS longitude
FROM users_profiles;

此代码将按我的意愿显示纬度和经度列,但我无法将其插回到我在users_profiles表中创建的相应纬度/经度列。

1 个答案:

答案 0 :(得分:1)

执行查询不会设置列。要创建列,请执行以下操作:

alter table users_profiles add column latitude decimal(10, 4);
alter table users_profiles add column longitude decimal(10, 4);

要分配它们,请使用update

update users_profiles
    set latitude = cast(SUBSTRING_INDEX(`location`, ',', 1) as decimal(10, 4)),
        longitude = cast(SUBSTRING_INDEX(location, ',', -1) as decimal(10, 4));

严格来说,cast()操作是不必要的。我喜欢明确表示字符串和其他类型之间的转换,以防代码中发生异常。使用隐式强制转换可能很难发现问题。