Postgresql中的基本SQL选择失败

时间:2010-05-25 02:33:35

标签: sql postgresql

我正在postgresql表上做一个select *,一切看起来都不错。但如果我这样做:

SELECT Name from People

它说:

ERROR: column People.Name does not exist
SQL state: 42703
Character: 8

但是在select *期间显示名称列。我试过了:

SELECT People.Name from People

同样的结果。我错过了什么吗?在任何其他数据库中执行此操作应该非常简单。

3 个答案:

答案 0 :(得分:2)

尝试在列名称周围加上引号,即“名称”

答案 1 :(得分:2)

PostgreSQL将所有内容转换为小写。

如果您要求:

CREATE TABLE People
{
id SERIAL,
Att1 varchar(100)
-- constraints
};

SELECT Name FROM People;

您应该获取所有信息,因为pgsql将其转换为

CREATE TABLE people
{
id SERIAL,
att1 varchar(100),
-- constraints
};

SELECT name FROM people;

如果您使用pgAdmin构建表并使用混合大小写创建了字段,则需要将它们引用为成功,如下所示:

SELECT "Att1" FROM people

答案 2 :(得分:1)

Name是一个关键字,因此在这种情况下可能无法妥善处理。最好的办法就是像这样对表进行别名:

SELECT Name from People p

然后使用p选择列:

SELECT p.Name from People p