首页 > 解决方案 > Postgresql 列不存在

问题描述

我正在运行一个简单的选择查询:

SELECT return_part_i.CntrctTrmntnInd FROM return_part_i LIMIT 10;

并得到以下错误:

错误:return_part_i.cntrcttrmntnind 列不存在第 1 行:SELECT return_part_i.CntrctTrmntnInd FROM return_part_i LIMI... ^ 提示:也许您的意思是引用列“return_part_i.CntrctTrmntnInd”。SQL 状态:42703 字符:8

我已经尝试过使用和不使用表标识符的查询。我直接从提示中复制字段名称。数据库中的许多字段都会发生这种情况。

标签: sqlpostgresqlquoted-identifier

解决方案


如果您的列名中确实有驼峰式大小写,那么您必须用双引号将列名括起来

SELECT "CntrctTrmntnInd"  FROM return_part_i LIMIT 10;

PostgreSQL 列(对象)名称在用双引号指定时区分大小写。不带引号的标识符自动用作小写,因此正确的大小写顺序必须用双引号书写

并且正如 Raymond Nijland 正确建议的那样,如果您想要一个 LIMIT 结果,您应该使用 order by

SELECT "CntrctTrmntnInd"  FROM return_part_i ORDER BY "CntrctTrmntnInd" LIMIT 10;

推荐阅读