将表名前置到SQL中结果集中的每一列? (Postgres具体)
发布时间:2021-04-01 01:28:47 所属栏目:MsSql教程 来源:网络整理
导读:如何获取结果集中每列的标签,以便在其表中添加名称? 我希望在单个表和连接上进行查询时发生这种情况. 例: SELECT first_name,last_name FROM person; 我希望结果如下: | person.first_name | person.last_name | |-------------------|------------------|
如何获取结果集中每列的标签,以便在其表中添加名称? 我希望在单个表和连接上进行查询时发生这种情况. 例: SELECT first_name,last_name FROM person; 我希望结果如下: | person.first_name | person.last_name | |-------------------|------------------| | Wendy | Melvoin | | Lisa | Coleman | 我可以使用“AS”为每列定义别名,但这将是乏味的.我希望这会自动发生. SELECT first_name AS person.first_name,last_name AS person.last_name FROM person; 我的问题的原因是我使用的数据库驱动程序不提供元数据,通知我结果集获取其数据的数据库列.我正在尝试编写通用代码来处理结果集. 我想知道如何在SQL中执行此操作,或至少在Postgres中具体执行此操作. SQLite有这样一个功能,虽然我看到它现在被莫名其妙地弃用了. SQLite有两个pragma设置:full_column_names& short_column_names. 解决方法我知道这个问题有点陈旧,但也许有人会绊倒答案,这会帮助他们.正在寻找你正在寻找的东西的正确方法是创建和使用View.是的,将所有这些新列名称作为别名键入一次会有点单调乏味,但是如果这里有很多列,那么您可以使用它来利用PostgreSQL元数据来写出视图的文本: select 'CREATE OR REPLACE VIEW people AS SELECT ' || (select string_agg(column_name || ' AS person_' || column_name,',') from information_schema.columns where table_name = 'person' group by table_name) || ' FROM person;'; 运行此产生: ?column? ------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE VIEW people AS SELECT last_name AS person_last_name,first_name AS person_first_name FROM person; 1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms] [Executed: 4/21/12 2:05:21 PM EDT ] [Execution: 9/ms] 然后你可以复制并执行结果并瞧瞧: select * from people; person_last_name person_first_name ------------------- -------------------- Melvoin Wendy Coleman Lisa 2 record(s) selected [Fetch MetaData: 1/ms] [Fetch Data: 0/ms] (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |