PostgreSQL列名是否区分大小写?

我有一个数据库表,说Postgres的persons有一个列名称,说: "first_Name"的另一个团队传下来。 现在我试图用PG命令来查询这个列名的这个表。

 select * from persons where first_Name="xyz"; 

它只是返回

错误:列“first_Name”不存在

不知道我是在做一些愚蠢的事情还是有解决这个问题的方法,我失踪了?

所有没有双引号的标识符(包括列名)在PostgreSQL中被折叠为小写。 使用双引号创build的列名因此保留大写字母(和/或其他语法违规)必须在其余的时间用双引号引起来。 所以, 是的 ,PostgreSQL列名是区分大小写的:

 SELECT * FROM persons WHERE "first_Name" = 'xyz'; 

同时修复'xyz'周围不正确的双引号。 值(string文字)用单引号引起来

在这里阅读手册。

我的build议是只使用合法的小写字母,因此不需要双引号。

引用文档 :

关键词和未加引号的标识符是不区分大小写的。 因此:

 UPDATE MY_TABLE SET A = 5; 

可以等价写成:

 uPDaTE my_TabLE SeT a = 5; 

引用标识符使其区分大小写,而未加引号的名称总是折叠为小写:

 UPDATE "my_table" SET "a" = 5; // equivalent to the above examples 

大小写混合的列名必须在postgres sql中双引号。 所以最好的约定是遵循所有小写与下划线。