跳到主要内容

trim:去除空格/指定字符

速查结论

trim(str) 用于从字符串两端移除空格。通过 BOTH / LEADING / TRAILING 关键字可指定修剪方向,通过 trimStr 参数可指定修剪的字符集合(而非子串)。

语法

-- 默认修剪两端空格
trim(str)

-- 指定方向
trim(BOTH FROM str) -- 两端
trim(LEADING FROM str) -- 左侧
trim(TRAILING FROM str) -- 右侧

-- 指定修剪字符
trim(trimStr FROM str)
trim(BOTH trimStr FROM str)
trim(LEADING trimStr FROM str)
trim(TRAILING trimStr FROM str)

参数说明

参数说明
str待修剪的字符串
trimStr要修剪的字符集合(每个字符独立匹配),默认是空格

返回值:修剪后的字符串。

Since: 1.5.0

示例

修剪空格

-- 默认修剪两端空格
SELECT trim(' SparkSQL ');
-- 结果: SparkSQL

-- 只修剪左侧
SELECT trim(LEADING FROM ' SparkSQL ');
-- 结果: SparkSQL (右侧空格保留)

-- 只修剪右侧
SELECT trim(TRAILING FROM ' SparkSQL ');
-- 结果: SparkSQL(左侧空格保留)

修剪指定字符

-- 修剪两端指定字符集合 S 和 L
SELECT trim('SL' FROM 'SSparkSQLS');
-- 结果: parkSQ(从两端逐个移除 S 和 L 字符)

SELECT trim(BOTH 'SL' FROM 'SSparkSQLS');
-- 结果: parkSQ

SELECT trim(LEADING 'SL' FROM 'SSparkSQLS');
-- 结果: parkSQLS

SELECT trim(TRAILING 'SL' FROM 'SSparkSQLS');
-- 结果: SSparkSQ

trim vs ltrim vs rtrim 对比

函数方向可指定字符适用场景
trim(str)两端通用修剪
ltrim(str)左侧否(仅空格)简单左修剪
rtrim(str)右侧否(仅空格)简单右修剪

常见报错与避坑指南

trimStr 是字符集合,不是子串

trimStr 中的每个字符独立作用,不是作为一个整体子串来匹配。

-- trimStr='SL' 表示移除 S 和 L 两个字符,不是移除子串 'SL'
SELECT trim('SL' FROM 'SSparkSQLS');
-- 结果: parkSQ(两端的 S 被逐个移除)

-- 不是移除 'SL' 这个子串
SELECT trim('SL' FROM 'SLSparkSQLSL');
-- 结果: parkSQ(不是说去掉前后精确的 'SL')
📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看