2016-04-14 5 views
1

I eine Tabelle geom haben wie folgt:Einfügen einer MYSQL 5.7 Punktdarstellung der Breite, Länge in eine Tabelle

id (Int) not null (pk), 
name (varchar 25), 
timestamp (timestamp), 
lat (decimal 6,4), 
lon (decimal 6,4), 
g (geometry), 
pt (point) 

Ich habe einen anderen Prozess, der die Lat, Lon Felder auffüllt.

Ich möchte die pt Feld aufzufüllen Vorteil von 5,7 der Geospatial-Erweiterungen zu nehmen

wenn ich die lon Fettfinger, lat in die folgende INSERT-Anweisung funktioniert gut ist:

[email protected]='point(-80.00 40.00)'; 

insert into geom (pt,timestamp) values (pointfromtext(@g),now()); 

aber ich möchte die Werte in diesem Datensatz des lon, lat Felder

ich erstellen kann eine concat-Anweisung sieht aus wie der richtige Wert gespeichert verwenden, was mit, aber der Einsatz „pointfromtext“ Anweisung wird das Ergebnis nicht nehmen

+0

Mögliches Duplikat von [Räumliche MySQL-Spalte erstellen - Punktdatentyp mit Lat lang ohne Verwendung der Alter-Tabelle] (http://stackoverflow.com/questions/39612856/create-mysql-spatial-column-point-data-type- with-lat-long-ohne-using-alter) – e4c5

Antwort

0

Baukonstruktion SQL verwenden, unter anderem

CONCAT("point(", lon, ",", lat, ")") 

lon braucht DECIMAL(7.4), wenn Sie erwarten, dass die ganze Welt zu decken.

+0

vielen Dank hier ist die Abfrage, die funktioniert Dank dieser & auch die Informationen über die Dezimalstruktur: set @ g = (wählen Sie CONCAT ("point (", lon , '', lat, ")") wie aus geom, wo id = '13 '); In geom (pt, timestamp) -Werte einfügen (pointfromtext (@g), now()); – Hankrausch