在PostgreSQL中选择数字命名列返回?列



我使用的是PostgreSQL 13.7(Debian 13.7-+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
);

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

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

从列"factor"返回的数据是正确的,但具有数字名称的列显示为名称?column?,并且该列中每行的值都是列名(如1.8.0(。

我在PHP、phppgadmin甚至psql的命令行中尝试过这种方法。All为每列返回以数字开头的?column?

我知道用数字作为列名不是最好的,但有可能用这种方式吗?还是我被迫用字母作为列名?或者是我碰到了什么虫子?提前感谢您的解释!

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

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

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

最新更新