我需要使用名称以数字开头的表。例如,在crs_1973
模式中有一个名为 的表2015_04_21
。我知道当表名由数字组成时,我必须双引号才能使用它,例如,SELECT * FROM crs_1973."2015_04_21";
(这对我有用)。但是,我想从 PostgreSQL 中提取有关此表的信息information_schema
。具体来说,我需要表中列的数据类型2015_04_21
,
我用一个名称以字母开头的表尝试了这个查询,它产生了期望的结果:
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'some_table_name_that_starts_with_a_letter'
ORDER BY ordinal_position;
但是,当我使用名称以数字开头的表运行此查询时,它不会。例如:
WHERE table_name = 'crs_1973.2015_04_21'
不起作用。也没有:
WHERE table_name = 'crs_1973'.'2015_04_21'
WHERE table_name = 'crs_1973'."2015_04_21"
WHERE table_name = 'crs_1973'.'"2015_04_21"'
...
等。如何使此查询适用于以数字开头的表名?这可能吗?
在几个不同的模式中有名为“2015_04_21”的表,因此我需要将限定的表名传递给查询。
@ypercube 的解决方案(在上面的评论中):
工作完美。我在这里写下来,以便我可以接受答案。