postgresql 聚合函数 的编写
PostgreSQL功能很强大,支持事务,嵌套SQL,触发器,聚合等等几乎所有的商业数据库的功能,不得不佩服他还免费,我个人觉得MySQL不如它。别人老说PostggreSQL慢,其实维护得好,SQL写得合理,性能和MySQL有过之而无不及。 言归正传,我前段时间用PostgreSQL来做一个功能,就是想把某个表里面的某个字符型字段的值用逗号隔开“汇总”起来。实现这个功能可以在编程层次上把所有的行列出来,然后拼凑起来,这样的方法是傻子才用,数据量一大性能就不用说了。 我想应该有类似postgres的内嵌函数sum的函数,只是这次sum是汇总字符串而已。于是发现有个聚合函数可以自编的,看了一下Help,很简单。 于是先创建一个函数: CREATE OR REPLACE FUNCTION concat(text, text) RETURNS text AS $BODY$ DECLARE t text; BEGIN IF character_length($1) > 0 THEN t = $1 ', ' $2; ELSE t = $2; END IF; RETURN t; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; ALTER FUNCTION concat(text, text) OWNER TO postgres; GRANT EXECUTE