六月 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 文档:字符串函数和操作符