PSQL查询某一字段以外的其他字段的数据
postgresSQL查询某一字段以外的其他字段
·
有时候会遇到:查询过程,有一部分字段是不需要的,但是字段数量太多了,一个个输入目标字段,真的是太麻烦了,所以写了个函数,用于避开某一字段,自动生成一句命令。
CREATE OR REPLACE FUNCTION "get_sepcify_fileds"("reln" VARCHAR, "n_index" INT)
RETURNS VARCHAR AS $BODY$BEGIN
-- Routine body goes here...
RETURN(SELECT
string_agg ( NAME, ', ' )
FROM
(
SELECT A.attname AS NAME
FROM
pg_class AS C,
pg_attribute AS A
WHERE
C.relname = reln
AND A.attrelid = C.oid
AND A.attnum != n_index
AND A.attnum > 0
) dd)
;
END$BODY$
LANGUAGE plpgsql
不过最后生成的结果依旧是一个表,只是方便了取出字段
还是需要手动再把这句命令加进去。所以还是很鸡肋。
由于我是自学的SQL,水平有限,我觉得这个函数有两处优化的空间,但是还没有实现出来:
1.如何将这句形成命令,融入到查询中,使得查询更加自动化、便捷化。
2.关于n_index,如何实现排除多个字段
一个变种:
可以把n_index从坐标换成对应的字段名字
CREATE OR REPLACE FUNCTION "get_sepcify_fileds"("reln" VARCHAR, "n_index" VARCHAR) --字符串类型
RETURNS VARCHAR AS $BODY$BEGIN
-- Routine body goes here...
RETURN(SELECT
string_agg ( NAME, ', ' )
FROM
(
SELECT A.attname AS NAME
FROM
pg_class AS C,
pg_attribute AS A
WHERE
C.relname = reln
AND A.attrelid = C.oid
AND A.attname != n_index --字段名
AND A.attnum > 0
) dd)
;
END$BODY$
LANGUAGE plpgsql
如果大家有想法,或者成功实现了,或者优化了,请在评论区教教我,谢谢
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)