我目前正在Postgresql数据库中设置全文搜索,如本手册所述:http://www.postgresql.org/docs/9.0/static/textsearch-tables.html
目前我发表了以下声明:

CREATE FUNCTION fts_update() RETURNS trigger AS $$
begin
  new.tsv :=
       to_tsvector('pg_catalog.english', coalesce(new.title,'')) ||
       to_tsvector('pg_catalog.english', coalesce(new.description,'')) ||
       to_tsvector('pg_catalog.english',
        SELECT array_to_string(array_accum(name), ' ') FROM agencies where id = new.agency_id
       );
  return new;
end
$$ LANGUAGE plpgsql;
CREATE TRIGGER ftsupdate_trigger BEFORE INSERT OR UPDATE ON camps FOR EACH ROW EXECUTE PROCEDURE fts_update()"

在这里,我需要从另一个表中添加一些字段到索引,但是Postgresql不允许我:
PG::Error: ERROR:  syntax error at or near "SELECT"
LINE 9:         SELECT array_to_string(array_accum(name), ' ') FROM ...

有什么好办法吗?

最佳答案

我想你所需要做的就是把选择用括号括起来。

 select to_tsvector('english',(select array_to_string(array['one','two','three'],' ')));

关于sql - 函数调用内的PostgreSQL嵌套SELECT语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13621560/

10-16 18:52
查看更多