Postgresql中的基本SQL选择失败
我正在postgresql表上执行select*,一切看起来都很好。但如果我这样做:Postgresql中的基本SQL选择失败,sql,postgresql,Sql,Postgresql,我正在postgresql表上执行select*,一切看起来都很好。但如果我这样做: SELECT Name from People 它说: ERROR: column People.Name does not exist SQL state: 42703 Character: 8 但“名称”列将在选择*期间显示。我试过: SELECT People.Name from People 同样,结果也是一样的。我错过什么了吗?在任何其他数据库中都应该很容易做到这一点。尝试在列名周围加上引号,即
SELECT Name from People
它说:
ERROR: column People.Name does not exist
SQL state: 42703
Character: 8
但“名称”列将在选择*期间显示。我试过:
SELECT People.Name from People
同样,结果也是一样的。我错过什么了吗?在任何其他数据库中都应该很容易做到这一点。尝试在列名周围加上引号,即“name”
name
是一个关键字,因此在这种情况下可能无法很好地处理它。最好的做法是将表别名如下:
SELECT "Att1" FROM people
从人物中选择姓名
p
然后使用p
选择列:
选择
p.Name
来自People p
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
抱歉,我使用了Name作为示例,我的真实字段不是keyname。我怀疑这是一个大小写问题,但我使用了GUI.Workes中显示的相同大小写,但我不明白为什么不能只使用不带引号的常规名称。可能是因为名称是保留字。还有George解释的原因(小写)。