首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL列名是否区分大小写?

PostgreSQL列名是否区分大小写?
EN

Stack Overflow用户
提问于 2014-01-02 16:21:15
回答 5查看 145.9K关注 0票数 196

我有一个数据库表,在Postgres中是由另一个团队传递的,它的列名是"first_Name"。现在,我尝试使用PG commander在这个列名上查询这个表。

代码语言:javascript
复制
select * from persons where first_Name="xyz";

然后它就会返回

错误:列"first_Name“不存在

不确定我是否在做一些愚蠢的事情,或者是否有解决这个问题的方法我错过了?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-01-02 17:53:47

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

代码语言:javascript
复制
"first_Name"

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

代码语言:javascript
复制
'xyz'

因此,是的,PostgreSQL列名是区分大小写的(当使用双引号时):

代码语言:javascript
复制
SELECT * FROM persons WHERE "first_Name" = 'xyz';

Read the manual on identifiers here.

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

票数 368
EN

Stack Overflow用户

发布于 2015-04-27 23:37:39

引用documentation

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

更新MY_TABLE集合A= 5;

可以等效地写成:

uPDaTE my_TabLE SeT a= 5;

您也可以使用带引号的标识符编写它

代码语言:javascript
复制
UPDATE "my_table" SET "a" = 5;

引用标识符使其区分大小写,而未加引号的名称始终折叠为小写(与SQL标准中未引用的名称折叠为大写不同)。例如,PostgreSQL认为标识符FOOfoo"foo"是相同的,但是"Foo""FOO"是不同的。

如果你想编写可移植的应用程序,建议你总是引用一个特定的名称,或者永远不要引用它。

票数 23
EN

Stack Overflow用户

发布于 2015-04-28 11:45:47

在PostgresQL中,大小写混合或大写的列名必须用双引号引起来。因此,最好的约定是在所有小写字母后面加上下划线。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20878932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档