You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL POINT列显示乱码求助:存储坐标后出现奇怪字符

问题解答
  • 这不是编码问题,也不是POINT类型不支持坐标,是HeidiSQL直接读取POINT的二进制存储格式导致的“乱码”。

原因说明

MySQL的空间类型(包括POINT)采用二进制格式存储地理数据,并非明文坐标字符串。你看到的奇怪字符就是二进制数据的直接转译,属于正常现象,数据本身没有损坏。

正确查看坐标的方法

用MySQL提供的空间函数将二进制数据转换为可读格式:

  • 查看完整坐标文本:SELECT ST_AsText(coordinates) FROM _coordinates_test;
    执行后会返回标准格式的坐标:POINT(59.356125477261266 -2.8759361517393898)
  • 单独提取纬度/经度:
    SELECT ST_X(coordinates) AS latitude, ST_Y(coordinates) AS longitude FROM _coordinates_test;
    

米级距离计算方案

要计算物理对象间的米级距离,使用MySQL 5.7及以上版本支持的ST_Distance_Sphere函数,该函数基于球面计算两点间的直线距离(单位:米):

SELECT ST_Distance_Sphere(
    POINT(59.356125, -2.875936),
    POINT(另一纬度, 另一经度)
) AS distance_meters;

注意传入POINT的参数顺序是纬度在前,经度在后,和你插入数据时的格式一致。

HeidiSQL客户端优化

如果想在HeidiSQL中直接查看可读坐标,可在查询时固定用ST_AsText转换字段,部分新版本HeidiSQL也支持在表结构设置中,将空间类型字段的显示方式改为“文本格式”。

内容的提问来源于stack exchange,提问作者RedZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:05:34