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

时间:2018-05-10 22:02:32

标签: postgresql

今天早上我遇到了一个奇怪的问题。我正在创建一个简化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) 

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) 

的工作。

我经常在表中使用name作为列名,所以有关第一个sql语句失败的原因的任何想法吗?

1 个答案:

答案 0 :(得分:4)

这是一个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)

the documentation关于选择列表中的别名:

  

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

相关问题