TRIM (Transact-SQL)

适用于:SQL Server 2017 (14.x) 及更高版本Azure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

删除字符串开头和结尾的空格字符 char(32) 或其他指定字符。

还可以移除字符串的开头、末尾或首尾空格字符 char(32) 或其他指定字符。

从 SQL Server 2022 (16.x) 开始,可以移除字符串的开头、末尾或首尾空格字符 char(32) 或其他指定字符。

Transact-SQL 语法约定

语法

SQL Server 2022 (16.x) 及更低版本、Azure SQL 数据库和 Azure Synapse Analytics 的语法:

TRIM ( [ characters FROM ] string )

SQL Server 2022 (16.x) 及更高版本、Azure SQL 托管实例和 Microsoft Fabric 的语法:

重要

你将需要将数据库兼容性级别设置为 160 才能使用 LEADINGTRAILINGBOTH 关键字。

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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

[ LEADING | TRAILING | BOTH ]

适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 托管实例和 Microsoft Fabric:

可选的第一个自变量指定要剪裁的字符串的哪一侧:

  • LEADING 将移除字符串开头的指定字符。

  • TRAILING 将移除字符串末尾的指定字符。

  • BOTH(默认位置行为)价格移除字符串开头和末尾的指定字符。

characters

任何非 LOB 字符类型(nvarchar、varchar、nchar 或 char)的文本、变量或函数调用,其中包含应删除的字符。 不允许使用 nvarchar(max) 和 varchar(max) 类型。

字符串

要移除字符的任意字符类型表达式(nvarcharvarcharncharchar)。

返回类型

返回一个字符串参数类型的字符表达式,其中已从两侧删除空格字符 char(32) 或其他指定字符。 如果输入字符串是 NULL,则返回 NULL

注解

默认情况下,TRIM 函数删除字符串开头和末尾的空格字符。 此行为等同于 LTRIM(RTRIM(@string))

要在 SQL Server 2022 (16.x) 中启用可选的 LEADINGTRAILINGBOTH 位置参数,则必须在执行查询时,在要连接到的数据库上启用数据库兼容性级别 160

  • 使用可选的 LEADING 位置参数,行为等同于 LTRIM(@string, characters)
  • 使用可选的 TRAILING 位置参数,行为等同于 RTRIM(@string, characters)

示例

A. 删除字符串两侧的空格字符

以下示例删除了 test 一词前后的空格。

SELECT TRIM( '     test    ') AS Result;

下面是结果集:

test

B. 删除字符串两侧的指定字符

以下示例提供要从字符串中删除的可能字符的列表。

SELECT TRIM( '.,! ' FROM '     #     test    .') AS Result;

下面是结果集:

#     test

在此示例中,仅删除 # 前和单词 test 后的尾随句点和空格。 其他字符被忽略,因为它们并不存在于字符串中。

C. 删除字符串开头的指定字符

重要

你将需要将数据库兼容性级别设置为 160 才能使用 LEADINGTRAILINGBOTH 关键字。

以下示例从单词 test 前的字符串开头删除前导 .

SELECT TRIM(LEADING '.,! ' FROM  '     .#     test    .') AS Result;

下面是结果集。

# test .

D. 删除字符串末尾的指定字符

重要

你将需要将数据库兼容性级别设置为 160 才能使用 LEADINGTRAILINGBOTH 关键字。

以下示例从单词 test 后的字符串末尾删除尾随 .

SELECT TRIM(TRAILING '.,! ' FROM '     .#     test    .') AS Result;

下面是结果集。

.#     test

E. 删除字符串开头和末尾的指定字符

重要

你将需要将数据库兼容性级别设置为 160 才能使用 LEADINGTRAILINGBOTH 关键字。

以下示例删除字符串 123abc123 开头和末尾的字符 123

SELECT TRIM(BOTH '123' FROM '123abc123') AS Result;

下面是结果集:

abc