LPAD 函數核心概念
在 Oracle 資料庫中,LPAD 函數用於在字符串左側填充指定字符,使其達到目標長度。其名稱源自「Left Pad」(左側填充),是字符串處理中常用的工具函數。
語法結構
LPAD(源字符串, 目標長度[, 填充字符串])
- 源字符串:需處理的原始字符串
- 目標長度:期望返回的字符串總長度
- 填充字符串(可選):用於填充的字符,預設為單個空格
運作邏輯深度解析
函數實際執行流程如下:
- 先計算源字符串長度
- 若目標長度 ≤ 源字符串長度,直接截取左側字符至目標長度
- 若目標長度 > 源字符串長度,在左側重複填充指定字符直至達標
- 未指定填充字符時,默認使用空格填充
實戰範例演示
基礎用法:空格填充
SELECT LPAD('test', 10) FROM dual;
結果:` test`(前綴 6 個空格)
自定義填充字符
SELECT LPAD('test', 10, 'ee') FROM dual;
結果:`eeeeeetest`(填充 6 個 'e' 字符)
長度截取場景
SELECT LPAD('abcdefghij', 5) FROM dual;
結果:`abcde`(直接截取前 5 個字符)
常見應用場景
- 報表格式化:數字靠右對齊,如 `LPAD(TO_CHAR(emp_id), 6, '0')` 生成 `000001` 格式工號
- 數據掩碼:隱藏敏感信息前綴,如 `LPAD(SUBSTR(id_card, -4), 18, '*')`
- 固定寬度文件生成:ETL 流程中構建定長文件記錄
注意事項與最佳實踐
- 填充字符串可為多字符,函數會智能循環填充(如 `'ab'` 填充 5 位產生 `'ababa'`)
- 目標長度為負數或零時返回空字符串
- 搭配
RPAD 可實現雙側填充,構建居中對齊效果
- 大數據量查詢中避免在 WHERE 條件對列使用 LPAD,導致索引失效
對比函數速查
| 函數 | 方向 | 典型用途 |
| LPAD | 左側填充 | 數字補零、代碼對齊 |
| RPAD | 右側填充 | 字符串定長截取、報表尾部填充 |
| TRIM | 移除空格/字符 | 數據清洗、去除填充字符 |