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真题
