PostgreSQL中如何为字符串拼接生成的视图列命名?
如何为PostgreSQL视图中的拼接列指定有效名称?
你遇到的问题是视图中拼接生成的列被自动命名为?column?,无法直接用常规方式重命名。以下是两种解决方法:
方法一:重新创建视图时直接指定合法列名
这是最规范且不易出错的方式,在创建视图时为拼接列明确指定一个有意义的名称(比如file_path):
CREATE OR REPLACE VIEW fpathv AS SELECT f.fileid, d.dirid, d.dirname || f.fname AS file_path FROM files f JOIN dirs d ON f.dirid = d.dirid;
执行后再用\d+ fpathv查看,列名就会变成你指定的file_path。
方法二:修改现有视图的列名
如果不想重建视图,可以使用ALTER VIEW命令重命名列,注意原列名?column?包含特殊字符,必须用双引号包裹:
ALTER VIEW fpathv RENAME COLUMN "?column?" TO file_path;
注意事项
- 不要用
ALTER TABLE操作视图,视图的结构修改需要用ALTER VIEW命令。 - 自动生成的
?column?是PostgreSQL对未指定别名的计算列的默认命名,这类包含特殊字符的标识符在操作时必须用双引号包裹才能被正确识别。
内容的提问来源于stack exchange,提问作者John Daschbach
相关产品推荐
相关产品推荐

