gpt4 book ai didi

postgresql - 为什么 PostgreSQL 将所有内容默认为小写?

转载 作者:行者123 更新时间:2023-11-29 11:27:44 24 4
gpt4 key购买 nike

在使用了相当多的 MySQL (5.1) 之后,我正在尝试熟悉 Postgres (9.2),因为我被少数 MySQL's gotchas 所困扰。 .然而,在我使用 Postgres 的前五分钟,我遇到了一个 its gotchas ,我相信每个人都会受到影响:

  • 默认情况下,PostgreSQL 会将所有未引用的内容转换为小写。

这对我来说不是什么大问题,因为有几个明显的解决方法:

  • 用引号括起所有内容。
  • 允许以小写形式命名所有内容。

但我想知道为什么。考虑到我认为这个设计决定会引起多少争论,令我惊讶的是我在互联网上找不到任何理由。关于为什么 Postgres 是这样设计的,有没有人有详尽的解释,或者最好有一些开发人员声明的链接?我有兴趣。

最佳答案

SQL 标准指定将不带引号的标识符折叠为大写。许多其他 RDBMS 以这种方式遵循标准。 Firebird 和 Oracle 都可以。这意味着标识符匹配在默认情况下不区分大小写。当涉及到基本查询的兼容性时,此行为非常重要。在这方面,MySQL 的行为是一个真正的异常值。

但是 PostgreSQL 通过折叠为小写偏离了标准。这被认为更具可读性等一般原因,因为您可以使用 case 来提示语法。像这样的东西:

SELECT foo FROM bar WHERE baz = 1;

当箱子折叠到较低时,这会更自然。另一种折叠方式是:

select FOO from BAR where BAZ = 1;

通常像前一种行为(折叠为小写)因为它更好地强调了 sql 操作,而折叠为另一种情况则不强调操作并强调标识符。鉴于许多查询的复杂性,我认为前者的效果更好。

总的来说,我在 postgres 邮件列表上看到的最多的讨论是每个人都同意标准规定的行为被破坏了。以上是我对问题的理解。

关于postgresql - 为什么 PostgreSQL 将所有内容默认为小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com