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

如何在PostgREST的Select语句中使用内联函数?

在PostgREST中使用内联SQL函数的方法

你尝试的语法之所以报错,是因为PostgREST把ST_AsEWKT识别成了需要关联的表(select参数里的alias:table格式是用来做外键关联查询的),所以它会去查找mytable和ST_AsEWKT之间的外键关系,自然找不到匹配项。

除了你已经用的视图方案,还有两种更灵活的方式实现需求:

1. 用计算字段(Computed Columns)

先给目标表创建一个同名前缀的SQL函数,PostgREST会自动把它识别为表的计算字段:

CREATE OR REPLACE FUNCTION mytable_geom_ewkt(mytable)
RETURNS text AS $$
  SELECT ST_AsEWKT($1.geom);
$$ LANGUAGE sql STABLE;

之后就可以直接通过API调用这个计算字段:

https://api.example.com/mytable?select=id,geom_ewkt

2. 用远程过程调用(RPC)

创建一个返回结果集的函数,通过PostgREST的RPC接口调用:

CREATE OR REPLACE FUNCTION get_mytable_with_ewkt()
RETURNS SETOF RECORD AS $$
  SELECT id, ST_AsEWKT(geom) AS geom FROM mytable;
$$ LANGUAGE sql STABLE;

调用方式:

https://api.example.com/rpc/get_mytable_with_ewkt

关于视图方案

你目前用的视图方案完全可行,适合需要固定返回格式、不需要动态调整的场景,而且调用方式简单直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:03:12