是否有一种简单的方法可以采用纬度,经度格式的“位置”表格列,并将其拆分为纬度列和经度列?
select
SUBSTRING_INDEX(`location`, ',', 1) AS latitude,
SUBSTRING_INDEX(SUBSTRING_INDEX(`location`, ',', 2), ',', -1) AS longitude
FROM users_profiles;
此代码将按我的意愿显示纬度和经度列,但我无法将其插回到我在users_profiles表中创建的相应纬度/经度列。
答案 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()
操作是不必要的。我喜欢明确表示字符串和其他类型之间的转换,以防代码中发生异常。使用隐式强制转换可能很难发现问题。