我使用的是PostgreSQL 13.7(Debian 13.7-0+deb11u1),下表:

CREATE TABLE public.meterdata (
  "0.0.0" numeric(8,0) NOT NULL,
  "0.9.1" numeric(7,0) NOT NULL,
  "0.9.2" numeric(7,0) NOT NULL,
  "1.2.0" real,
  "1.6.0" real NOT NULL,
  "1.8.0" real NOT NULL,
  "1.8.1" real,
  "1.8.2" real,
  "3.8.0" real NOT NULL,
  "3.8.1" real,
  "3.8.2" real,
  "F.F" numeric(8,0) NOT NULL,
  factor numeric(4,0) NOT NULL
);

现在,当我try 获取一些数据时:

SELECT '0.0.0','1.8.0',factor FROM meterdata

从列‘FACTOR’返回的数据是正确的,但是具有数字名称的列显示为名称?column?,并且该列中每一行的值是列名(如1.8.0).

我try 使用PHP、phppgadmin,甚至从命令行使用psql.对于以数字开头的每一列,ALL返回?column?.

我知道使用数字作为列名并不是最好的,但有没有可能以某种方式使用这种方式,或者我是被迫使用字母作为列名的吗? 或者是我遇到的某个虫子? 提前感谢您的解释!

推荐答案

在PostgreSQL中,如果使用非标准的column names,则必须用双引号将它们引起来.使用以数字开头或包含句点的列名是没有问题的,但您需要始终用双引号将它们引起来.

单引号表示文字字符串,因此查询处理器在查询中看到的是常量字符串,而不是列名.在列名不清楚的情况下(例如,也可能是计算列),PostgreSQL将打印?column?作为占位符.

SELECT "0.0.0", "1.8.0", factor FROM meterdata

Postgresql相关问答推荐

将几个左连接合并为一个

使用 pgx 扫描范围类型

Gorm 创建表单数据文件上传错误

使用 WHERE 子句创建递归视图

合并两个字典并创建一个包含更新凭据的字典列表

AWS RDS Postgres 性能缓慢的数据传输

使用 GDB 调试器调试 AGE 代码的过程

gorm 创建并返回值 many2many

Postgres 低估了导致错误查询计划的行数

try 访问本地主机中的数据库时如何解决Error: The server does not support SSL connections?

如何引用使用 ON CONFLICT 中的函数的唯一索引?

在这个 Dockerfile 中创建的 Postgres 用户名/密码在哪里?

在 row_to_json 函数中 Select 查询

在同一分区上应用多个窗口函数

Rails:PG :: InsufficientPrivilege:错误:permission denied for relation schema_migrations

如何为 postgres 编写 DELETE CASCADE?

Postgresql滚动删除旧行?

在 PostgreSQL 中使用 CASE 一次影响多个列

Rails 5 db 迁移:如何修复 ActiveRecord::ConcurrentMigrationError

postgresql 删除级联