2017-03-27 1 views
1

J'ai des données latlon stockées dans un seul varchar comme par ex. "51.51087974, -0.11101941" et je veux le transformer en une valeur spatiale POINT. Lorsque les valeurs sont dans des flottants séparés, je peux utiliser par exemple. UPDATE myTable SET coords = GeometryFromText(CONCAT('POINT(', lon, ' ', lat, ')')); et je peux évidemment remplacer la virgule dans ma valeur par un espace pour obtenir les données POINT, mais lat et lon sont alors dans le mauvais sens. Je suis sûr que cela doit être une opération commune, mais pour la vie de moi ne peut pas sembler trouver la solution!Comment transformer la chaîne "lat, lon" en un POINT dans MySql

Répondre

1

Vous pouvez utiliser la fonction de mysql substring_index() pour analyser vos données coordonnées:

Renvoie la chaîne de caractères str avant les occurrences de comptage des delim delimiter . Si count est positif, tout ce qui est à gauche du délimiteur final (en partant de la gauche) est renvoyé. Si le nombre est négatif, tout est à droite du délimiteur final (en comptant à partir de la droite). SUBSTRING_INDEX() effectue une correspondance sensible à la casse lors de la recherche de delim.

UPDATE myTable 
SET coords = GeometryFromText(CONCAT('POINT(', substring_index(coord_field, ',',-1), ' ', substring_index(coord_field, ',',1), ')'));