PostgreSQL 列别名

本文介绍了在 PostgreSQL 中为一个列指定别名以提高输出的可读性。

PostgreSQL 允许您为 SELECT 返回的列指定别名,以提高可读性和使用的便利性。

PostgreSQL 列别名语法

要在 SELECT 语句为指定的列分配别名,请使用以下的语法:

SELECT expr AS alias_name
[FROM table_name];

这里:

  • expr 是一个表达式或者列名。
  • alias_nameexpr 列的别名。 SELECT 语句返回的结果集中将使用别名。
  • 如果列别名中包含空格,请使用双引号 " 将列别名包围起来。
  • AS 是一个关键字,它是可选的。您可以省略它。

您可以像下面的语句为多个列设置别名:

SELECT
   expr1 AS alias_name1,
   expr2 AS alias_name2,
   ...
[FROM table_name];

PostgreSQL 列别名示例

我们将使用 Sakila 示例数据库 中的表进行演示,请您先在 PostgreSQL 中安装 Sakila 示例数据库

简单示例

要从 actor 表中检索演员的名字和姓氏,请使用以下语句:

SELECT
   first_name,
   last_name
FROM actor
LIMIT 10;
 first_name |  last_name
------------+--------------
 PENELOPE   | GUINESS
 NICK       | WAHLBERG
 ED         | CHASE
 JENNIFER   | DAVIS
 JOHNNY     | LOLLOBRIGIDA
 BETTE      | NICHOLSON
 GRACE      | MOSTEL
 MATTHEW    | JOHANSSON
 JOE        | SWANK
 CHRISTIAN  | GABLE

要为 last_name 指定一个别名 surname,请使用如下语句:

SELECT
   first_name,
   last_name AS surname
FROM
   actor
LIMIT 10;
 first_name |   surname
------------+--------------
 PENELOPE   | GUINESS
 NICK       | WAHLBERG
 ED         | CHASE
 JENNIFER   | DAVIS
 JOHNNY     | LOLLOBRIGIDA
 BETTE      | NICHOLSON
 GRACE      | MOSTEL
 MATTHEW    | JOHANSSON
 JOE        | SWANK
 CHRISTIAN  | GABLE

这里, 结果集中的列名 last_name 已经被替换为 surname

为表达式示例分配列别名

要从 actor 表中检索演员的全名,请使用以下语句:

SELECT
   first_name || ' ' || last_name
FROM
   actor
LIMIT 10;
      ?column?
---------------------
 PENELOPE GUINESS
 NICK WAHLBERG
 ED CHASE
 JENNIFER DAVIS
 JOHNNY LOLLOBRIGIDA
 BETTE NICHOLSON
 GRACE MOSTEL
 MATTHEW JOHANSSON
 JOE SWANK
 CHRISTIAN GABLE

这里,我们使用了 || 操作符连接两个字符串。 表达式 first_name || ' ' || last_namefirst_name, 空格 和 last_name 连接在一起。

我看可以看到,表达式输出的列名为 ?column?,这是没有意义的。为了让表达式的输出列名更易读,我们需要为表达式指定一个列名,例如 full_name

要解决此问题,您可以为表达式分配 first_name || ' ' || last_name 一个列别名,例如 full_name

SELECT
    first_name || ' ' || last_name full_name
FROM
    actor
LIMIT 10;
      full_name
---------------------
 PENELOPE GUINESS
 NICK WAHLBERG
 ED CHASE
 JENNIFER DAVIS
 JOHNNY LOLLOBRIGIDA
 BETTE NICHOLSON
 GRACE MOSTEL
 MATTHEW JOHANSSON
 JOE SWANK
 CHRISTIAN GABLE

包含空格的列别名

在上面的例子中,如果您要使用 Full Name 作为列别名,因为它包含了空格,请使用双引号引用起来,即:"Full Name"

SELECT
    first_name || ' ' || last_name "Full Name"
FROM
    actor
LIMIT 10;
     Full Name
---------------------
 PENELOPE GUINESS
 NICK WAHLBERG
 ED CHASE
 JENNIFER DAVIS
 JOHNNY LOLLOBRIGIDA
 BETTE NICHOLSON
 GRACE MOSTEL
 MATTHEW JOHANSSON
 JOE SWANK
 CHRISTIAN GABLE

结论

  • 使用语法 expr AS alias_name or 为列或表达式分配列别名 expression AS alias_name
  • AS 关键字是可选的。
  • 使用双引号 (") 将包含空格的列别名括起来。