PostgreSQL列名是否区分大小写?

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

 select * from persons where first_Name="xyz"; 

它只是返回

错误:列“first_Name”不存在

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

3 Solutions collect form web for “PostgreSQL列名是否区分大小写?”

所有没有双引号的标识符(包括列名)在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中双引号。 所以最好的约定是遵循所有小写与下划线。

  • 如何避免SQL中的“除以零”错误?
  • 我如何获得java.sql.ResultSet的大小?
  • MySQL导出到outfile:CSV转义字符
  • SQLjoin差异
  • Oracle:如果表存在
  • 当参数不是string时,是否安全地参数化SQL查询?
  • 可以使用postgres执行跨数据库查询?
  • 如何将date时间与SQL Server中的唯一date进行比较
  • SQL不在工作
  • 在MySQL中查找具有相同值的行
  • 如何删除sql server中的重复行?