mysql - 在逗号上拆分不平衡的 GEO 字符串

标签 mysql sql

我有一列 (location) 带有纬度/经度地理坐标。我需要的是两列,所以我使用此拆分此列:

left(location, locate(',', location)-1),
right(location, locate(',', location)-1),

我尝试了一些不同的列类型,并且在搜索网络时还发现了一个关于拆分中的尾随空格的问题,但它没有对此有任何启发。

列是 varchar50 作为源,两次 char25 作为目标。 MySQL 版本:5.5.27


如您在此示例中所见,结果并不一致。必须有一种方法可以在逗号上进行干净的拆分。

这不行,在第二个字符串的尾部逗号

Split A
'52.37924601809355,4.87214179273601'

Result A
'52.37924601809355' and ',4.87214179273601'


这是好东西,快乐时光

Split B
'52.37924969798386,4.872048790064259'

Result B
'52.37924969798386' and '4.872048790064259'

最佳答案

将您的命令更改为

substring(location, locate(',', location)+1)

否则,生成的子字符串取决于第二个子字符串的长度(在 , 之后)。

right命令用于提取固定长度的子串。

查看此 SQL Fiddle .

关于mysql - 在逗号上拆分不平衡的 GEO 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937217/

相关文章:

MySQL - 获取前 3 个逗号分隔值

mysql - GROUP BY 用法不正确

mysql - Rails 4 - 根据列查找最新的不同记录

javascript - 将数据保存在可编辑的动态 html 表中

mysql - 案例 when then,但在 when 和 before then 内有 AND 条件

mysql - 向2个表中插入数据

mysql - sql加入where和1-n连接

sql - PL/SQL 在多个列和表中查找特殊字符

SQL在两个独立数据库中的两个相等数据库之间复制唯一记录

php - 嵌套集模型 : Query node childs only 1 level below AND all parents above