PostgreSQL查询数字命名列返回?column?的问题咨询
问题原因与解决方案
你遇到的问题不是PostgreSQL的bug,而是错误的列引用方式导致的:
- 查询语句里的
'0.0.0'和'1.8.0'是单引号包裹的字符串常量,PostgreSQL会直接返回这个字符串本身,而非对应列的数据;同时因为你没给这些字符串指定别名,结果列名会显示为?column?。 - 你的列名属于非标准标识符(以数字开头、包含点号),PostgreSQL要求这类标识符必须用双引号包裹才能正确识别为列名。
正确的查询语句
将单引号替换为双引号即可:
SELECT "0.0.0", "1.8.0", factor FROM meterdata;
关于非标准列名的使用说明
PostgreSQL允许使用这类非标准列名,但有以下注意事项:
- 必须始终用双引号包裹引用,否则会被解析为字符串、数值或者表达式(比如
1.8.0会被当成数值1.8)。 - 虽然支持,但这类列名会增加SQL编写的复杂度,容易引发语法错误,同时降低代码可读性,不推荐使用。如果可能,建议改用符合标准的标识符(以字母开头,仅包含字母、数字、下划线或美元符号)。
内容的提问来源于stack exchange,提问作者Christoph
相关产品推荐
相关产品推荐

