如何在PostgreSQL函数中传入字符串数组过滤数据表
PostgreSQL数组过滤表数据的正确函数写法
你的原函数缺少返回类型定义和函数体的标准包裹结构,同时建议避免参数名与列名冲突,以下是修正后的完整函数:
CREATE OR REPLACE FUNCTION funname(p_groups text[]) RETURNS SETOF tableName AS $$ SELECT * FROM tableName WHERE groupscolumn @> p_groups; $$ LANGUAGE sql;
关键说明:
RETURNS SETOF tableName:明确函数返回tableName表的行集合,这是返回多行数据的必要定义- 参数名
p_groups:避免与表中groupscolumn(若列名为groups更需注意)重名引发歧义 @>操作符:PostgreSQL数组包含运算符,用于判断groupscolumn数组是否包含传入参数数组的所有元素;若需匹配数组中任意元素,可替换为&&(数组重叠运算符)- 函数体用
$$包裹并指定LANGUAGE sql:这是PostgreSQL SQL函数的标准语法要求
内容的提问来源于stack exchange,提问作者SR3599
相关产品推荐
相关产品推荐

