为什么PostgreSQL默认一切都是小写的?
发布时间:2020-12-13 16:02:13 所属栏目:百科 来源:网络整理
导读:在尝试使用 MySQL(5.1)之后,我试图熟悉Postgres(9.2),因为我被 MySQL’s gotchas的一小部分咬了.然而,在我与Postgres的前五分钟里,我遇到了 its gotchas之一,我肯定会打到每个人: 默认情况下,PostgreSQL会将未引用的所有内容转换为小写. 这对我来说并不算太
在尝试使用
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邮件列表上看到的大多数讨论都是每个人都同意标准规定的行为被打破.所以以上就是我对这些问题的理解. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |