gpt4 book ai didi

postgresql - 将 `jsonb_array_elements` 的多行结果扩展到 PL/pgSQL 过程中的 tsvector

转载 作者:行者123 更新时间:2023-11-29 14:20:05 25 4
gpt4 key购买 nike

繁花似锦,

我有一个像这样的 JSON 数组 items (PostgreSQL 9.4):

[{name: "foo"},
{name: "bar"},
{name: "baz"}]

我想要的是将所有项目的 name 连接到一个 tsvector 类型的列中,以便我可以在该列上创建索引。

如果我运行:

SELECT to_tsvector(array_to_string(array(SELECT jsonb_array_elements(items)->>'name' FROM store), ','))

我可以得到预期的结果:'foo': 1 'bar': 2 'baz': 3

但是我遇到了这样的问题:

CREATE OR REPLACE FUNCTION update_tsv()
RETURNS TRIGGER AS $$
BEGIN
NEW.tsv = to_tsvector(jsonb_array_elements(NEW.items)->>'name');
RETURN NEW;
END;
$$ language 'plpgsql';

to_tsvector 提示多行。

A sqlfiddle附上。

任何帮助将不胜感激!

最佳答案

你会这样尝试吗:

CREATE OR REPLACE FUNCTION update_tsv()
RETURNS TRIGGER AS $$
BEGIN
NEW.tsv = to_tsvector(array_to_string(array( select json_array_elements(NEW.items)->>'name' ),' '));
RETURN NEW;
END;
$$ language 'plpgsql';

关于postgresql - 将 `jsonb_array_elements` 的多行结果扩展到 PL/pgSQL 过程中的 tsvector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699645/

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