一个简单的问题,是否可以在PostgreSQL中省略双引号?

这里是一个示例,给出了select * from A;,我将检索ERROR: relation "a" does not exist,然后必须给出select * from "A";才能获得真实的结果。

有什么办法不做第二个,而是在PostgreSQL上做第一个?

有帮助吗?

解决方案

您在创建表时就开始出现此查询的问题。创建表格时,请勿使用引号。

使用此: 通用标签

不是这样的: 通用标签

后者会使其生效,因此您以后总是必须引用它。前者使它成为普通名称,您可以使用SELECT * FROM a;SELECT * FROM A;

如果不能仅重新创建表,请使用ALTER TABLE语法: 通用标签

其他提示

如果您在postgres中的表格名称中包含大写字母,则必须使用

双引号

为避免需求将表命名为“ a”

Postgresql具有某些特殊行为引用和区分大小写:将每个未引用的标识符折叠成小写(也在创建时),然后区分大小写。

仅当标识符(表名,列名等)(在架构创建时)使用大写字母(部分或全部)且在双引号之间定义时,才需要使用标识符中的双引号。

在这种情况下(我建议您这样做),当您使用该标识符时,必须以相同的方式键入它:区分大小写(键入的大小写字母与定义的完全相同)并在双引号之间。

在其他情况下,您可以使用不带引号的标识符,并且始终不区分大小写。

不要在表名或列名中使用大写字母,如果您使用的是此类,则postgres将需要双引号来访问它。

请在此处中查看详细的说明。

PostgreSQL服务器表名称区分大小写,但默认情况下被强制为小写:当您键入CREATE TABLE AAA时,它将在执行查询之前变为CREATE TABLE aaa

双引号名称保持大小写不变,因此在CREATE TABLE "AaA"之后,您将获得表AaA表,并且必须一次又一次将其双引号括起来。

不知道他们为什么这样做:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top