PostgreSQL 教程: concat、concat_ws 函数

九月 2, 2023

摘要:在本教程中,我们将向您展示如何使用 PostgreSQL 的 CONCAT 和 CONCAT_WS 函数将两个或多个字符串连接成一个。

PostgreSQL CONCAT 函数简介

要将两个或多个字符串连接成一个,可以使用字符串连接运算符 ||,如下例:

SELECT
   'Concatenation' || ' ' || 'Operator' AS result_string;

PostgreSQL Concatenation Operator

以下语句将字符串与NULL值连接起来:

SELECT
   'Concat with ' || NULL AS result_string;

它返回一个NULL值。

从 9.1 版本开始,PostgreSQL 引入了一个名为CONCAT的内置字符串函数,用于将两个或多个字符串连接成一个。

下面说明了CONCAT函数的语法:

CONCAT(str_1, str_2, ...)

CONCAT函数接受参数列表。这些参数需要可转换为字符串。此上下文中的字符串支持的数据类型:char、varchar 或 text。

CONCAT函数接受的参数个数是可变的。这意味着CONCAT函数接受数组作为参数。在这种情况下,您需要使用VARIADIC关键字来标记数组。CONCAT函数将每个数组元素视为参数。

与连接运算符 || 不同,CONCAT函数忽略NULL参数。我们将在下一节中详细了解它。

PostgreSQL CONCAT 函数示例

以下 SELECT 语句使用CONCAT函数将两个字符串连接成一个:

SELECT
	CONCAT ('CONCAT',' ', 'function');

PostgreSQL Concat function example

以下语句将示例数据库customer表的first_namelast_name列中的值连接起来。

SELECT
	CONCAT  (first_name, ' ', last_name) AS "Full name"
FROM
	customer;

Postgres CONCAT function example

在下面的示例中,我们使用CONCAT函数将字符串与NULL值连接起来。

SELECT
	CONCAT('Concat with ', NULL) AS result_string;

PostgreSQL concat function with a NULL value

如您所见,与字符串连接运算符 || 不同,CONCAT函数忽略NULL参数。

以下语句将字符串与从 LENGTH 函数返回的数字连接起来。

SELECT
	first_name,
	concat (
		'Your first name has ',
		LENGTH (first_name),
		' characters'
	)
FROM
	customer;

postgresql concat integer to string

PostgreSQL CONCAT_WS 函数

除了CONCAT函数之外,PostgreSQL 还提供了CONCAT_WS将字符串连接成由特定分隔符分隔的字符串的函数。顺便说一句,WS 代表有分隔符(with separator)的意思。

CONCAT函数一样,CONCAT_WS函数也是可变参数和忽略NULL值的。

下面说明了CONCAT_WS函数的语法。

CONCAT_WS(separator,str_1,str_2,...);

separator是一个分隔结果字符串中所有参数的字符串。

str_1str_2等是字符串或任何可以转换为字符串的参数。

CONCAT_WS函数返回一个组合字符串,该字符串是str_1str_2等的组合,并用separator分隔。

PostgreSQL CONCAT_WS 函数示例

以下语句连接姓氏和名字,并用逗号和空格分隔它们:

SELECT
	concat_ws (', ', last_name, first_name) AS full_name
FROM
	customer
ORDER BY
	last_name;

postgresql concat_ws function example

在本教程中,您学习了如何使用 PostgreSQL 的CONCAT()CONCAT_WS函数将两个或多个字符串连接成一个。