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

从MySQL迁移至PostgreSQL:大写字段名SQL查询适配问题

MySQL转PostgreSQL:大小写字段名的SQL兼容写法

针对你遇到的大小写字段名兼容问题,核心要抓住PostgreSQL的标识符规则:未加双引号的标识符会被自动转为小写,所以大写的字段/表名必须用双引号包裹,但要注意表别名和字段名的分隔方式。

你的原始MySQL查询转换为PostgreSQL兼容写法:

SELECT * 
from test t1 
WHERE created_at = (SELECT MAX(created_at) 
                    from test t2 
                    WHERE t1."UpperCaseTableName" = t2."UpperCaseTableName") 
 AND "Completed" = FALSE 
ORDER BY "UpperCaseTableName" ASC

关键注意点:

  • 正确格式是表别名."大写字段名":你之前尝试的"t1.UpperCaseTableName"会被PostgreSQL识别为一个名为t1.UpperCaseTableName的单独字段,而非t1表下的UpperCaseTableName字段,这就是报错的核心原因。
  • PostgreSQL中布尔类型推荐用TRUE/FALSE替代0/1:虽然输入0也会被解析为FALSE,但使用标准布尔值更符合PostgreSQL的使用习惯。

长期优化方案

既然你数据量不大,最省心的方式还是把数据库中所有大写的表名、字段名直接转为小写(包括实际的数据库对象)。这样后续写SQL完全不需要加双引号,既能彻底避免大小写兼容问题,也符合PostgreSQL的常规开发规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:20:33