gpt4 book ai didi

postgresql - 如何在 postgres(postgis)查询中将错误转换为 null?

转载 作者:行者123 更新时间:2023-11-29 12:23:51 26 4
gpt4 key购买 nike

我有以下 postgis 查询:

select st_pointonsurface(geometry), geometry, other, important, columns 
from my_polygons;

在 ~2.5m 结果之后,有一个函数失败的记录。

ERROR: GEOSPoint OnSurface: TopologyException: 
Input geom 1 is invalid: Self-intersection at or near
point -9083598.0378282126 3646413.3039207752 at -9083598.0378282126 3646413.3039207752

查看几何图形,我明白了为什么会失败。这是一个糟糕的多边形。

我愿意

  1. 忽略该行(从结果集中过滤它);或
  2. 忽略该列(将其转换为 null 并返回其他列)。

我怎样才能得到这两种结果?

最佳答案

此函数将“尝试/捕获”该函数,在出现任何异常时返回 null

CREATE OR replace FUNCTION polylabel(arg geometry)
RETURNS geometry LANGUAGE plpgsql
AS $$
BEGIN
BEGIN
RETURN st_pointonsurface(arg);
EXCEPTION WHEN OTHERS THEN
RETURN null;
end;
END $$;

关于postgresql - 如何在 postgres(postgis)查询中将错误转换为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53291720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com