如何将PostGIS空几何转换为NULL?是否有更简洁的实现方式?
更简洁的PostGIS空几何转NULL实现方式
当然有更简洁的写法!你完全可以利用SQL标准函数和PostGIS的特性来简化这个逻辑,甚至能省去自定义函数里的CASE语句:
简化后的自定义函数
DROP FUNCTION IF EXISTS null_if_empty(geometry); CREATE FUNCTION null_if_empty(g geometry) RETURNS geometry AS $func$ SELECT NULLIF(g, 'EMPTY'::geometry); $func$ LANGUAGE sql;
更极致的方式:直接在查询中使用
如果不需要把这个逻辑复用成函数,你甚至可以直接在查询里写,连函数定义都省了:
SELECT NULLIF(your_geometry_column, 'EMPTY'::geometry) FROM your_table;
原理说明
这里用到了SQL的NULLIF函数——它的作用很直白:如果第一个参数和第二个参数相等,就返回NULL,否则返回第一个参数。而'EMPTY'::geometry会被PostGIS自动解析为空几何对象,刚好能匹配你要处理的空几何值,完美替代原来的CASE判断逻辑,代码更短也更易读。
内容的提问来源于stack exchange,提问作者loop
相关产品推荐
相关产品推荐

