六月 23, 2024
摘要:在本教程中,我们将向您展示如何使用 PostgreSQL 的 CONCAT 函数,将两个或多个字符串连接成一个。
目录
PostgreSQL CONCAT 函数简介
要将两个或多个字符串连接成一个,可以使用字符串连接运算符 ||,如下例:
SELECT
'John' || ' ' || 'Doe' AS full_name;
输出:
full_name
-----------
John Doe
(1 row)
以下语句使用串联运算符(||),将字符串与NULL值连接起来:
SELECT
'John' || NULL result;
它返回一个NULL值。
result
--------
null
(1 row)
从 9.1 版本开始,PostgreSQL 引入了一个名为CONCAT的内置字符串函数,用于将两个或多个字符串连接成一个。
下面说明了CONCAT函数的语法:
CONCAT(string1, string2, ...)
CONCAT函数接受输入字符串列表,它可以是任何字符串类型,包括CHAR、VARCHAR和TEXT。
CONCAT函数返回一个新字符串,该字符串由输入字符串连接生成。
与串联运算符 || 不同,CONCAT函数忽略NULL参数。
若要使用指定的分隔符,将两个或多个字符串连接成一个字符串,可以使用 CONCAT_WS() 函数。
PostgreSQL CONCAT 函数示例
让我们举一些使用 PostgreSQL CONCAT函数的示例。
1) 基本 PostgreSQL CONCAT 函数示例
下面的示例使用CONCAT函数将三个文本字符串连接为一个:
SELECT
CONCAT ('John', ' ', 'Doe') full_name;
输出:
full_name
-----------
John Doe
(1 row)
2) 将 CONCAT 函数用于表数据的示例
我们将使用样例数据库中的customer表:

下面的语句使用CONCAT函数,连接customer表的first_name和last_name列中的值,中间还有一个空格,生成一个单独的字符串:
SELECT
CONCAT (first_name, ' ', last_name) AS full_name
FROM
customer
ORDER BY
full_name;
输出:
full_name
-----------------------
Aaron Selby
Adam Gooch
Adrian Clary
Agnes Bishop
Alan Kahn
...
3) 使用 CONCAT 函数时带有 NULL
首先,创建一个表,名为contacts,并在其中插入一些行:
CREATE TABLE contacts (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(15)
);
INSERT INTO contacts (name, email, phone)
VALUES
('John Doe', 'john@gmail.com', '123-456-7890'),
('Jane Smith', 'jane@example.com', NULL),
('Bob Johnson', 'bob@example.com', '555-1234'),
('Alice Brown', 'alice@example.com', NULL),
('Charlie Davis', 'charlie@example.com', '987-654-3210')
RETURNING *;
输出:
id | name | email | phone
----+---------------+---------------------+--------------
1 | John Doe | john@gmail.com | 123-456-7890
2 | Jane Smith | jane@example.com | null
3 | Bob Johnson | bob@example.com | 555-1234
4 | Alice Brown | alice@example.com | null
5 | Charlie Davis | charlie@example.com | 987-654-3210
(5 rows)
INSERT 0 5
第二步,使用CONCAT函数连接contacts表的name、email和phone列中的值:
SELECT
CONCAT(name, ' ', '(', email, ')', ' ', phone) contact
FROM
contacts;
输出:
contact
--------------------------------------------------
John Doe (john@gmail.com) 123-456-7890
Jane Smith (jane@example.com)
Bob Johnson (bob@example.com) 555-1234
Alice Brown (alice@example.com)
Charlie Davis (charlie@example.com) 987-654-3210
(5 rows)
输出表明CONCAT函数忽略了NULL。
总结
使用 PostgreSQL CONCAT函数将两个或多个字符串连接成一个。
了解更多
PostgreSQL 教程:字符串函数
PostgreSQL 文档:字符串函数和操作符