You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中能否将关键字用作SELECT列表别名?为何name别名报错?

问题原因及解决方案

这是因为在PostgreSQL中,name是一个内置的系统数据类型(主要用于存储数据库对象名称,比如用户名、表名、角色名等),虽然它不属于SQL标准的保留关键字,但PostgreSQL的查询解析器在处理未加引号的name标识符时,会优先将其识别为这个系统类型,而非你定义的列别名,这就导致了SQL语句解析出错,最终创建视图失败。

而你改用application作为别名时,这个名称只是你自定义的表名,不属于PostgreSQL的系统内置类型或保留关键字,解析器能正确识别它是列别名,语句自然就能正常执行了。

解决办法

如果坚持要使用name作为列别名,只需要给别名加上双引号("name"),明确告诉解析器这是一个自定义标识符,而非系统类型:

CREATE OR REPLACE VIEW application_view AS 
SELECT COALESCE( nullif(full_name,''), nullif(additional_info,''), app_name) "name", id 
FROM application 
ORDER BY COALESCE( nullif(full_name,''), nullif(additional_info,''), app_name)

修改后语句即可正常执行,同时满足你用name作为列别名的需求。

内容的提问来源于stack exchange,提问作者Keith John Hutchison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:06:31