我可以在选择列表中使用 Postgres 关键字作为别名吗?

2023-11-30

今天早上我遇到了一个奇怪的问题。我正在创建一个视图来简化 Postgres 表中的应用程序列表。

这失败了。

CREATE OR REPLACE VIEW application_view AS 
SELECT COALESCE( nullif(full_name,''), nullif(additional_info,''), app_name) name
, id
FROM application
ORDER BY COALESCE( nullif(full_name,''), nullif(additional_info,''), app_name) 

whereas

CREATE OR REPLACE VIEW application_view AS 
SELECT COALESCE( nullif(full_name,''), nullif(additional_info,''), app_name) application
, id
FROM application
ORDER BY COALESCE( nullif(full_name,''), nullif(additional_info,''), app_name) 

worked.

我经常使用 name 作为表中的列名,所以关于为什么第一个 sql 语句失败有什么想法吗?


It's a keyword。当您想在选择列表中使用关键字作为别名时,您必须使用该词as:

select 1 name;

ERROR:  syntax error at or near "name"
LINE 1: select 1 name;

select 1 as name;

 name 
------
    1
(1 row)

From 文档关于选择列表中的别名:

要指定用于输出列的名称,请写入 AS输出名称在列的表达式之后。 (您可以省略 AS,但前提是所需的输出名称与任何 PostgreSQL 关键字都不匹配(请参阅附录 C)。为了防止将来可能添加关键字,建议您始终编写 AS 或双引号输出名称。 )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在选择列表中使用 Postgres 关键字作为别名吗? 的相关文章

随机推荐