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

pgAdmin4查询PostgreSQL列需加双引号,能否修改设置取消该要求?

根因说明

这不是可直接切换的全局配置项,差异来自两套环境的表结构定义区别,和操作系统无关。PostgreSQL对标识符的大小写处理有固定规则:

  • 不带双引号的标识符会被自动转为全小写后再做匹配
  • 带双引号的标识符会严格保留大小写做匹配

你Manjaro环境的sales表在建表时,列名是用双引号包裹的驼峰格式(比如CREATE TABLE sales ("saleDate" DATE, ...)),所以列名会以saleDate的格式存储,查询时写不带双引号的saleDate会被转为全小写的saledate,和实际存储的列名不匹配,就会抛出42703错误。
而Ubuntu环境建表时没有给列名加双引号,saleDate会被自动转成saledate存储,后续查询时写saleDate也会被转成saledate,自然可以正常匹配。

解决方案

方案1:修改列名为全小写(最推荐,一劳永逸)

直接把现有驼峰列名改为全小写,后续查询就不需要加双引号:

ALTER TABLE sales RENAME COLUMN "saleDate" TO saledate;
ALTER TABLE sales RENAME COLUMN "saleAmount" TO saleamount;

修改完成后,你原来的SELECT saleDate,qty,saleAmount FROM sales语句就可以正常执行。

方案2:查询时加别名(临时使用,不修改表结构)

如果不方便调整表结构,可以在查询时给驼峰列加双引号后取全小写别名,后续业务逻辑直接用别名即可:

SELECT "saleDate" AS saledate, "qty", "saleAmount" AS saleamount FROM sales;

注意

PostgreSQL本身没有全局开关可以修改大小写匹配规则,部分客户端提供的强制标识符大小写转换配置会严重降低SQL兼容性,跨环境运行时容易触发未知问题,不建议使用。

开发规范建议

PostgreSQL生态的通用最佳实践是所有表名、列名统一使用下划线命名法(比如用sale_date代替saleDate),建表时不要给标识符加双引号,从根源上避免大小写匹配问题。

内容的提问来源于stack exchange,提问作者Paul Harper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 08:06:11