LPAD() 和 RPAD() 是 Oracle 中用于字符串填充的两个重要函数,它们可以分别在字符串的左侧、右侧填充指定的字符,使字符串达到指定的长度
1.LPAD()函数(左填充函数)
LPAD()函数在字符串的左侧填充指定的字符,直到字符串达到指定的长度
语法格式
LPAD(padded_str, length, pad_string)
参数说明
padded_str:要填充的原始字符串
length:填充后字符串的总长度
pad_string:可选,用于填充的字符串(默认为单个空格)
示例
-- 左侧填充空格到10位(默认填充字符为空格)
SELECT LPAD('Oracle', 10) FROM dual; -- ' Oracle'
-- 左侧填充'*'到10位
SELECT LPAD('Oracle', 10, '*') FROM dual; -- '****Oracle'
-- 左侧填充多个字符
SELECT LPAD('123', 8, 'AB') FROM dual; -- ABABA123
-- 格式化员工工号(左侧补零到6位)
-- 示例结果: 101 → '000101'
SELECT employee_id, LPAD(employee_id, 6, '0') AS formatted_id
FROM employees;
-- 生成固定长度的报告标题
-- 结果: '================销售报告 2025-08-06'
SELECT LPAD('销售报告', 20, '=') || ' ' || TO_CHAR(SYSDATE, 'YYYY-MM-DD')
FROM dual;
2.RPAD()函数(右填充函数)
RPAD()函数在字符串的右侧填充指定的字符,直到字符串达到指定的长度
语法格式
RPAD(padded_str, length, pad_string)
参数说明
padded_str:要填充的原始字符串
length:填充后字符串的总长度
pad_string:可选,用于填充的字符串(默认为单个空格)
示例
-- 右侧填充空格到10位(默认填充字符为空格)
SELECT RPAD('Oracle', 10) FROM dual; -- 'Oracle '
-- 右侧填充'*'到10位
SELECT RPAD('Oracle', 10, '*') FROM dual; -- 'Oracle****'
-- 右侧填充多个字符
SELECT RPAD('123', 8, '+-') FROM dual; -- '123+-+-+'
-- 格式化产品代码(右侧补X到10位)
-- 示例结果: 'A1' → 'A1XXXXXXXX'
SELECT product_code, RPAD(product_code, 10, 'X') AS formatted_code
FROM products;
LPAD()和RPAD()函数的共同特性
① 长度处理规则
如果原始字符串长于指定长度,函数会截断字符串到指定长度
SELECT LPAD('Oracle', 4) FROM dual; -- 'Orac'
SELECT RPAD('Oracle', 4) FROM dual; -- 'Orac'
② NULL值处理
如果输入字符串为NULL,结果也是NULL
SELECT LPAD(NULL, 10, '*') FROM dual; -- NULL
SELECT RPAD(NULL, 10, '*') FROM dual; -- NULL
③ 填充字符
可以是一个字符或多个字符(多字符时会循环使用);如果省略,默认为单个空格