首页/数据/SQL 速查/TRIM / LTRIM / RTRIM 去空白
函数速查60 条

TRIM / LTRIM / RTRIM 去空白

去掉字符串两端的空白或指定字符:TRIM 默认只去半角空格,清洗用户输入时通常还要处理制表符与不换行空格。

SQL 速查数据更新于 2026-10-13

TRIM 是什么

TRIM 去掉字符串两端的空白字符,LTRIM 与 RTRIM 分别只处理左侧与右侧。两库语法基本一致:TRIM(str) 去掉两端空格,TRIM(LEADING|TRAILING|BOTH 字符 FROM str) 可指定要去掉的字符。需要注意 TRIM 默认只处理半角空格,制表符、换行与不换行空格不会被去掉,清洗用户输入时通常还要配合 REPLACE 处理这些字符。对列做 TRIM 后再比较会让该列索引失效。

基本信息

TRIM(str)去掉两端半角空格
LTRIM / RTRIM只去左侧或只去右侧
指定字符TRIM(BOTH 'x' FROM str) 可指定要去掉的字符
默认范围仅半角空格,不含制表符与不换行空格
索引影响对列 TRIM 后比较会使该列索引失效
适用平台标准语法,MySQL 8.0 与 PostgreSQL 均支持

典型使用场景

  • 清洗用户输入:注册与导入时去掉首尾空格
  • 修复历史数据:统一修正带空格的编码与名称
  • 比对去重:先规范化再比较,避免空格造成的假重复
  • 导入前置处理:去掉 CSV 字段两侧的不可见字符
  • 拼接前整理:避免多余空格影响展示
  • 唯一约束校验:规范化后判断是否真的重复

示例

示例
SELECT TRIM('  hello  ')              AS a,   # hello
       LTRIM('  hello  ')              AS b,   # 只去左侧
       RTRIM('  hello  ')              AS c,   # 只去右侧
       TRIM(BOTH '-' FROM '-abc-')     AS d;   # 去掉两端的 -

-- 清洗后写回:先确认影响行数,再更新
SELECT COUNT(*) FROM users WHERE name <> TRIM(name);
UPDATE users SET name = TRIM(name) WHERE name <> TRIM(name);

-- 处理制表符与不换行空格:TRIM 默认不管这些字符
SELECT REPLACE(REPLACE(name, CHAR(9), ''), CHAR(160), '') FROM users;

函数与范围

写法去掉内容注意
TRIM(str)两端半角空格不含制表符、换行、不换行空格
LTRIM(str)左侧空格右侧保留
RTRIM(str)右侧空格左侧保留
TRIM(BOTH x FROM str)两端指定字符x 可以是任意单字符
REPLACE(str, …, '')任意位置的字符用于清理隐藏字符
清洗前先统计有多少行需要修改:SELECT COUNT(*) FROM 表 WHERE 列 <> TRIM(列),据此评估影响范围与执行时间。
在 WHERE 中对列使用 TRIM 会让索引失效;数据清洗类批量操作可以接受,但常规查询应保持列裸比较。
把去空格逻辑放在业务查询里临时处理,会掩盖数据质量问题;更稳的做法是在写入入口就做规范化,或加触发器与约束。

使用要点

  • 清洗时同时考虑制表符、换行与不换行空格
  • 批量更新前先统计影响行数并备份
  • 唯一键冲突排查时先规范化再比较
  • 应用层与数据库层选一层做规范化,避免重复处理
  • 清洗后回归验证:随机抽样比对清理前后的值
  • 把规范化规则写进数据接入规范,从源头减少脏数据

易错点

  • 以为 TRIM 能去掉所有空白字符,实际制表符与不换行空格仍留在数据里
  • 在 WHERE 条件里对列做 TRIM,索引失效导致全表扫描
  • 批量清洗前不统计影响行数,更新范围超出预期
  • 唯一约束报重复但看不到差异,其实是首尾不可见字符造成的
  • 在多层系统里重复做规范化,不同层规则不一致反而制造新的不一致

数据来源与参考

  • MySQL 8.0 Reference Manual · String Functions
  • PostgreSQL Documentation · String Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌