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

MySQL中如何过滤业务逻辑等价于NULL的POINT(0,0)记录?

过滤MySQL中POINT(0,0)的记录

在MySQL里,你可以通过以下几种方式过滤掉值为POINT(0,0)的记录:

  • 通过坐标提取函数判断
    利用ST_X()和ST_Y()分别提取POINT字段的经度和纬度值,判断是否同时为0:

    SELECT * FROM your_table
    WHERE NOT (ST_X(your_point_column) = 0 AND ST_Y(your_point_column) = 0);
    

    或者换一种逻辑写法,效果完全一致:

    SELECT * FROM your_table
    WHERE ST_X(your_point_column) != 0 OR ST_Y(your_point_column) != 0;
    
  • 直接比较POINT对象
    使用ST_Equals()函数直接对比字段值和POINT(0,0)是否相等,取反即可过滤:

    SELECT * FROM your_table
    WHERE NOT ST_Equals(your_point_column, POINT(0, 0));
    

    这个写法更直观,语义上明确是排除和零点完全相等的空间对象。

  • 适配旧版本MySQL
    如果你的MySQL版本较低(5.6及以前),没有ST_前缀的空间函数,可以用X()和Y()替代:

    SELECT * FROM your_table
    WHERE NOT (X(your_point_column) = 0 AND Y(your_point_column) = 0);
    

额外提示

如果你的POINT字段实际还存在NULL值(虽然你提到为了建索引设为非NULL,但可根据业务情况调整),可以把过滤条件扩展为:

SELECT * FROM your_table
WHERE NOT (ST_X(your_point_column) = 0 AND ST_Y(your_point_column) = 0)
OR your_point_column IS NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:47:34