我想更新我的数据集并使用 GEOMETRY 数据类型而不是使用纬度和经度。问题是我已经在表中使用数据类型设置了一个地理列,但我无法将数据放入其中。如何设置它的值?
我搜索了其他问题,所有问题都使用文本,我想从 JSON 进行转换。
你的问题不清楚。如果您的表当前有一个包含纬度和经度的 JSON 列,您可以使用如下所示的内容:
待定
id | json_point | 新点 |
---|---|---|
1 | {“纬度”:“51.5072”,“经度”:“0.1276”} |
UPDATE tbl SET new_point = POINT(json_point->>'$.longitude', json_point->>'$.latitude');
如果 json_point 包含 JSON 数组:
id | json_point | 新点 |
---|---|---|
1 | [0.1276, 51.5072] |
您可以更新:
UPDATE tbl SET new_point = POINT(json_point->'$[0]', json_point->'$[1]');
要更新字段,我们需要遵循这个格式 首先我们创建一个具有类型和坐标的 JSON,然后将其转换为 GEO。另请注意,坐标采用 JSON 数组的格式。
这里是
Point
类型和 (5, 1)
坐标的示例
ST_GeomFromGeoJSON(JSON_OBJECT('type', 'Point', 'coordinates', JSON_ARRAY(5, 10)))