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