PostgreSQL 列别名
本文介绍了在 PostgreSQL 中为一个列指定别名以提高输出的可读性。
PostgreSQL 允许您为 SELECT
返回的列指定别名,以提高可读性和使用的便利性。
PostgreSQL 列别名语法
要在 SELECT
语句为指定的列分配别名,请使用以下的语法:
SELECT expr AS alias_name
[FROM table_name];
这里:
expr
是一个表达式或者列名。alias_name
是expr
列的别名。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_name
将 first_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
关键字是可选的。 - 使用双引号 (") 将包含空格的列别名括起来。