0
SELECT AVG(MY_AE_Actual) FROM MY_Data_Details

导致错误:

错误:列“my_ae_actual”不存在第 1 行:SELECT AVG(MY_AE_Actual) FROM MY_Data_Details ^ 提示:也许您的意思是引用列“my_data_details.my_ae_actual111”。********** 费勒 **********

错误:列“my_ae_actual”不存在 SQL 状态:42703 提示:也许您的意思是引用列“my_data_details.my_ae_actual111”。蔡晨:12

更新

这很奇怪。我现在在 PostgreSQL 10 中使用下表进行了测试:

CREATE TABLE public.testable
(
    id integer NOT NULL DEFAULT nextval('testable_id_seq'::regclass),
    string_data1 character varying(255) COLLATE pg_catalog."default",
    "String_Data2" character varying(255) COLLATE pg_catalog."default",
    "string_Data3" character varying(255) COLLATE pg_catalog."default",
    "String_data4" character varying(255) COLLATE pg_catalog."default",
    CONSTRAINT testable_pkey PRIMARY KEY (id)
)

select string_data1 from testable- 成功
select String_data1 from testable- 成功
select string_Data1 from testable- 成功
select String_Data1 from testable- 成功
select "string_data1" from testable- 成功
select "String_data1" from testable- 失败
select "string_Data1" from testable- 失败
select "String_Data1" from testable- 失败
select string_data2 from testable- 失败
select String_data2 from testable- 失败
select string_Data2 from testable- 失败
select String_Data2 from testable- 失败
select "string_data2" from testable- 失败
select "String_data2" from testable- 失败
select "string_Data2" from testable- 失败
select "String_Data2" from testable- 成功

事实证明,没有引号的 PostgreSQL 不是“不区分大小写”,而是“小写”,这根本没有意义。

4

1 回答 1

1

除非您使用双引号,否则 Postgresql 强制小写

ThisFieldName == thisfieldname

但:

"ThisFieldName"  <> ThisFieldName
"ThisFieldName"  <> thisfieldname

如果您像创建字段一样"ThisFieldName"需要引用它。

在您的情况下,您尝试使用MY_AE_Actual但 postgresql 告诉您my_ae_actual名称不存在。

同样适用于表名。

我的建议不要在 Postgresql 中使用大写字母。我使用所有带有下划线的小写字母_作为分隔符。但这只是个人喜好。

于 2018-06-19T15:32:21.933 回答