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

PostgreSQL在Windows下ORDER BY非整数常量报错问题排查

PostgreSQL在Windows与Linux下ORDER BY TRUE的行为差异

现象

  • 执行SQL语句:
    SELECT 1 ORDER BY TRUE;
    
    仅在Windows系统的psql v14及v15版本中报错,Linux系统下可正常运行。
  • Windows环境下需通过显式类型转换才能正常执行:
    SELECT 1 ORDER BY TRUE::BOOLEAN;
    

原因与配置关联

这个差异并非PostgreSQL服务器端的配置导致,而是Windows平台psql客户端v14/v15版本的解析行为bug:

  • Linux下的psql能正确将TRUE识别为布尔常量,而Windows同版本的psql会误将其解析为标识符(如列名),从而触发“列不存在”类的报错。
  • 客户端配置如quote_all_identifiers不会直接解决该问题,因为TRUE作为常量不需要被引号包裹。

解决方案

  • 显式添加类型转换:TRUE::BOOLEAN;
  • 将TRUE用单引号包裹并转换类型:'TRUE'::BOOLEAN;
  • 升级psql到v16及以上版本,该解析bug已在后续版本中修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:01:02