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

MySQL中St_AsText(point(longitude,latitude))的PostgreSQL等效写法是什么

问题根因

报错触发原因是ST_AsText为PostGIS扩展提供的函数,仅支持PostGIS的geometry类型入参。你使用PostgreSQL原生point(longitude, latitude)构造的是数据库内置基础point类型,不属于PostGIS的geometry类型,无法匹配函数参数要求。
同时原SQL为MySQL语法,存在多处需要适配PostgreSQL/PostGIS生态的调整点。

前置检查

确保数据库已启用PostGIS扩展,未启用可执行以下语句开启:

CREATE EXTENSION IF NOT EXISTS postgis;

等效查询语句

SELECT 
  ogc_fid, 
  name, 
  CONCAT(
    'GEOMETRYCOLLECTION(',
    string_agg(ST_AsText(ST_SetSRID(ST_MakePoint(longitude, latitude), 4326)), ','),
    ',',
    ST_AsText(geometry),
    ')'
  ) AS shape 
FROM locationshape 
WHERE 
  locationshape.location_id IS NULL 
  AND ST_Contains(geometry, ST_SetSRID(ST_MakePoint(longitude, latitude), 4326))
GROUP BY ogc_fid, name;

改动说明

  • 用PostGIS提供的ST_MakePoint(longitude, latitude)替代原生point()构造点,生成符合PostGIS规范的geometry类型点,兼容PostGIS全量空间函数
  • 新增ST_SetSRID(..., 4326)为构造的点设置空间参考系,可根据实际业务使用的坐标系修改SRID值,避免空间计算出现隐式转换异常
  • 用PostgreSQL原生的string_agg()替代MySQL的group_concat()实现分组字符串拼接,同时因使用聚合函数,需在GROUP BY子句中指定非聚合字段ogc_fid、name
  • 调整字符串拼接逻辑,直接用CONCAT即可实现GEOMETRYCOLLECTION的格式拼接,无需使用CONCAT_WS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:27:01