admin

PostgreSQL 列名是否区分大小写?

sql

我有一个 db 表,persons在 Postgres 中由另一个具有列名的团队传下来,例如,"first_Name"。现在我正在尝试使用 PG指挥官在这个列名上查询这个表。

select * from persons where first_Name="xyz";

它只是返回

错误:列“first_Name”不存在

不确定我是否在做一些愚蠢的事情,或者是否有解决我遗漏的问题的方法?


阅读 138

收藏
2021-07-01

共1个答案

admin

不是双引号的标识符*(包括列名)在 PostgreSQL 中被折叠为小写。使用双引号***创建并因此保留大写字母(和/或其他语法违规)的列名必须在其余生中使用双引号:

"first_Name"

值*(字符串文字/常量)用单引号括起来***:

'xyz'

所以,是的,PostgreSQL 列名是区分大小写的(双引号时):

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

我的长期建议是只使用合法的小写名称,这样就不需要双引号了。

2021-07-01