类别:

:doc:`/sql-reference/functions-string`(通用)

TRIM

从字符串中移除前导和尾随字符。

备注

要移除字符串中的字符,可以使用 REPLACE 函数。

另请参阅:

LTRIMRTRIM字符串和二进制数据类型

语法

TRIM( <expr> [, <characters> ] )
Copy

实参

expr

要修剪的字符串表达式。

characters

要从 expr 的左侧和右侧移除的一个或多个字符。

默认值为 :code:`' '`(单个空格字符)。如果未指定任何字符,则仅移除空格。

返回

此函数返回 VARCHAR 数据类型的值或 NULL 值。如果任一实参为 NULL,则返回 NULL。

使用说明

  • 您可以按任意顺序指定 characters 中的字符。

  • characters 中的 ' ' 规范不会移除其他空白字符(如制表符、行结束符等)。明确指定这些字符才能移除它们。

  • 要移除空格,实参中必须明确包含字符。例如,' $.' 从输入字符串中移除所有前导和尾随空格、美元符号和句点。

排序规则详细信息

当省略可选的第二个实参,或该实参仅包含恒定的空白时,支持:doc:排序规则 </sql-reference/collation>

返回值的排序规则规范与第一个实参的排序规则规范相同。

示例

从字符串中移除前导和尾随的 *- 字符:

SELECT '*-*ABC-*-' AS original,
       TRIM('*-*ABC-*-', '*-') AS trimmed;
Copy
+-----------+---------+
| ORIGINAL  | TRIMMED |
|-----------+---------|
| *-*ABC-*- | ABC     |
+-----------+---------+

从字符串中移除尾随的新行。此示例使用 CONCAT 函数将字符串放在 >< 字符内,帮助您可视化空格。

SELECT CONCAT('>', CONCAT('ABC\n', '<')) AS original,
       CONCAT('>', CONCAT(TRIM('ABC\n', '\n'), '<')) AS trimmed;
Copy
+----------+---------+
| ORIGINAL | TRIMMED |
|----------+---------|
| >ABC     | >ABC<   |
| <        |         |
+----------+---------+

从字符串中移除前导和尾随空格。此示例将字符串放在 >< 字符内,帮助您可视化空格。它还显示函数为 NULL 输入返回 NULL。

CREATE OR REPLACE TABLE test_trim_function(column1 VARCHAR);

INSERT INTO test_trim_function VALUES ('  Leading Spaces'), ('Trailing Spaces  '), (NULL);

SELECT CONCAT('>', CONCAT(column1, '<')) AS original_values,
       CONCAT('>', CONCAT(TRIM(column1), '<')) AS trimmed_values
  FROM test_trim_function;
Copy
+---------------------+-------------------+
| ORIGINAL_VALUES     | TRIMMED_VALUES    |
|---------------------+-------------------|
| >  Leading Spaces<  | >Leading Spaces<  |
| >Trailing Spaces  < | >Trailing Spaces< |
| NULL                | NULL              |
+---------------------+-------------------+
语言: 中文