MySQL在逗号前后移动字符串

MySQL在逗号前后移动字符串,mysql,sql,Mysql,Sql,我有一个mysql行,它的坐标以lat/long格式保存。我需要把它改成long/lat 我明白这需要以某种方式消除,并改变 在MySQL中,正确的方法是什么 样本: ["26.247798956308,50.657465902192","26.247765257163,50.656210342278","26.24777327998,50.655413265762","26.247772343418,50.655399250007","26.24775833567,50.6552060360

我有一个mysql行,它的坐标以lat/long格式保存。我需要把它改成long/lat

我明白这需要以某种方式消除,并改变

在MySQL中,正确的方法是什么

样本:

 ["26.247798956308,50.657465902192","26.247765257163,50.656210342278","26.24777327998,50.655413265762","26.247772343418,50.655399250007","26.24775833567,50.655206036067","26.247768008419,50.655097864672","26.247779429251,50.654965656351","26.247844499259,50.654613999694","26.247882692272,50.654350538671","26.247886070313,50.654253400286","26.248070301095,50.654265872269","26.24871145246,50.654291010692","26.248712355399,50.65429100802","26.248938997758,50.654292339968","26.248939900696,50.654292337296","26.249167443576,50.654292665245","26.249652369652,50.654311256915","26.24965327259,50.654311254243","26.250527203555,50.65426160469","26.251604232782,50.654185317821","26.251850689062,50.654165562357","26.252226248584,50.654138414997","26.252525072823,50.654117502871","26.252875354859,50.654092432768","26.253260873151,50.654076270464","26.253503640429,50.654024481477","26.253881809743,50.653956269108","26.253918794004,50.653941138898","26.253934151183,50.65394409752","26.254001887777,50.653956645335","26.254066915409,50.653981134594","26.254127534099,50.654016927469","26.254182158719,50.654063086371","26.254229361508,50.654118404871","26.254267909164,50.654181436626","26.254426530564,50.654433314626","26.254430159178,50.654440313548","26.254140446036,50.654870761592","26.253604791621,50.655536254578","26.253060504139,50.655991479569","26.252712653207,50.656277893161","26.252469279111,50.656453847903","26.252138350894,50.65664307698","26.25144296537,50.656971562628","26.250888157852,50.657182473989","26.250417074844,50.657288997819","26.249898133586,50.657394659791","26.248058102136,50.657466143684","26.247798956308,50.657465902192"]

如果您的行有一个字段,其中包含逗号分隔的lat/long对列表,那么最好将long/lat作为单独的字段存储在一个新表中,外键引用原始表。更好的做法是使用@a_horse_建议的点域,而不是lat/long单独的域。

一般规则(称为DB规范化)是:

切勿在一列中存储多个值! 因此,如果您可以更改表格设计,您可以这样做(在我的示例中,我们存储用户收藏夹的点-我不知道您的点有什么用途):

如果您希望检索用户“Tom”的所有记录,则可以运行此查询

select c.lng, c.lat
from coordinates c
join users u on u.id = c.user_id
where u.name = 'Tom'

正确的方法是在列中只存储单个值。您可以更改表的设计吗?MySQL不支持正确存储lat/long的本机“点”数据类型,这样您就不需要存储逗号分隔的值吗?在列中存储单个值吗?那么你是诚实地告诉我正确的方法是拥有400多个列@juergendNo,正确的方法是有两列:
lng
lat
和200行。当然还有另一列,它引用了这些坐标所属的另一个表中的记录。
select c.lng, c.lat
from coordinates c
join users u on u.id = c.user_id
where u.name = 'Tom'