首页/数据/SQL 速查/LPAD / RPAD 补位与截断
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

LPAD / RPAD 补位与截断

按指定长度左右补位(常用于编号前补零),长度小于原串时会从另一端截断;补位串可以多于 1 个字符。

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

示例

示例
SELECT LPAD('7', 4, '0');       -- '0007'
SELECT LPAD(123, 6, '0');      -- '000123'(数字先转字符串)
SELECT RPAD('AB', 5, '-');     -- 'AB---'
SELECT LPAD('abcdef', 3, '0'); -- 'abc'(超长时截断)
补位pad 串会重复直到达到长度
截断len 小于原串长度时只保留靠左/靠右部分
NULL任一参数 NULL 结果为 NULL
编号补零后是字符串类型,再与数字列比较会触发隐式转换,两库都建议统一类型。

易错点

  • 把 LPAD 当“补齐到不少于”使用:长度已够时它会截断而不是原样返回,需 CASE WHEN 判断
  • 对索引列 WHERE LPAD(id,6,'0') = '000123' 无法使用索引,等值查询应存规范化的字符串列

数据来源与参考

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