PostgreSQL 教程: concat 函数

六月 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函数接受输入字符串列表,它可以是任何字符串类型,包括CHARVARCHARTEXT

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表:

customer table

下面的语句使用CONCAT函数,连接customer表的first_namelast_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表的nameemailphone列中的值:

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