PostgreSQL 教程: trim 函数

九月 5, 2023

摘要:在本教程中,您将学习如何使用 PostgreSQL 的TRIM()函数,从字符串中删除包含空格或特定字符的最长字符串。

PostgreSQL TRIM 函数简介

TRIM()函数从字符串中删除包含特定字符的最长字符串。默认情况下,如果您没有明确指定要删除的字符,TRIM()函数将删除空格 (’ ‘)。

使用TRIM()函数,您可以从字符串的开头、结尾或开头和结尾删除包含字符的最长字符串。请注意,字符串可以是以下任何数据类型char、varchar 和 text

当我们想要从数据库中的字符串中删除不需要的字符时,TRIM()函数非常有用。我们经常用它来进行数据清理。

下面说明了TRIM()函数的语法。

TRIM([LEADING | TRAILING | BOTH] [characters] FROM string)

例如,如果要删除字符串开头的空格,可以使用以下语法:

TRIM(LEADING FROM string)

TRIM()函数的下面语法用于删除字符串末尾的所有空格。

TRIM(TRAILING FROM string)

要删除字符串开头和结尾的所有空格,请使用以下语法:

TRIM(BOTH FROM string)

或者用简化的方式:

TRIM(string)

PostgreSQL TRIM 函数示例

请查看以下从字符串中删除前导、尾随以及前导和尾随空格的示例。

SELECT
	TRIM (
		LEADING
		FROM
			'  PostgreSQL TRIM'
	),
	TRIM (
		TRAILING
		FROM
			'PostgreSQL TRIM   '
	),
	TRIM ('  PostgreSQL TRIM  ');

PostgreSQL TRIM function examples

以下语句使用不带前导空格和尾随空格的值更新示例数据库customer表的first_namelast_name列。它使用TRIM()函数从first_namelast_name列中删除前导和尾随空格。

UPDATE customer
SET first_name = TRIM (first_name),
    last_name = TRIM (last_name);

以下语句从数字中删除前导零 (0)。由于TRIM()函数只接受字符串作为参数,因此我们必须使用类型转换将数字转换为字符串,然后再将其传递给TRIM()函数。

SELECT
	TRIM (
		LEADING '0'
		FROM
			CAST (0009100 AS TEXT)
	); -- 9100

PostgreSQL LTRIM、RTRIM 和 BTRIM 函数

PostgreSQL 为您提供了LTRIMRTRIMBTRIM函数,它们是TRIM()函数的较短版本。

  • LTRIM()函数从字符串的开头删除所有字符(默认情况下为空格)。
  • RTRIM()函数从字符串末尾删除所有字符(默认情况下为空格)。
  • BTRIM()函数是LTRIM()RTRIM()函数的组合。

LTRIM()RTRIM()函数的语法如下:

LTRIM(string, [character]);
RTRIM(string, [character]);
BTRIM(string, [character]);

这相当于TRIM()函数的以下语法:

TRIM(LEADING character FROM string); -- LTRIM(string,character)
TRIM(TRAILING character FROM string); -- RTRIM(string,character)
TRIM(BOTH character FROM string); -- BTRIM(string,character)

让我们看一下以下使用LTRIM()RTRIM()BTRIM()函数从enterprise字符串中删除字符e的示例:

SELECT
	LTRIM('enterprise', 'e');

PostgreSQL LTRIM example

SELECT
	RTRIM('enterprise', 'e');

PostgreSQL RTRIM example

SELECT
	BTRIM('enterprise', 'e');

PostgreSQL BTRIM example

从字符串中删除空白字符

有时,您的字符串可能包含您想要删除的空白字符,例如空格、制表符、换行符等。但是,TRIM()函数仅允许您删除前导空格和尾随空格,而不是所有其他空白字符。您可以多次调用TRIM()函数,但效率不高。

从字符串中删除前导和尾随空白字符的一种方法是使用REGEXP_REPLACE()函数。例如,以下语句从字符串末尾删除一个空格和一个制表符,其中enterprise字符串末尾有 1 个空格和 1 个制表符。

SELECT REGEXP_REPLACE('enterprise 	', '\s+$', '');

模式\s+$解释如下:

  • \s:正则表达式类空白的简写。
  • + 指 1 次或多次连续匹配。
  • $ 表示字符串的结尾。

如果要删除前导空白字符,请使用正则表达式^\s+

在本教程中,我们向您展示了如何使用TRIM()LTRIM()RTRIM()BTRIM函数,从字符串的开头、结尾和两者中删除字符。