Oracle 字符函數實戰速查:大小寫、替換、截取、填充、編碼轉換全覆蓋
大小寫轉換
UPPER('liunan') -- LIUNAN
LOWER('LIUNAN') -- liunan
INITCAP('liu nan') -- Liu Nan (首字母大寫)
字符替換與轉換
| 函數 | 說明 | 範例 |
| REPLACE(str, old, new) | 全域替換 | REPLACE('ABC','A','_') → _BC |
| TRANSLATE(str, from, to) | 字元級一對一映射 | TRANSLATE('ABC','ABC','123') → 123 |
長度與截取 (SUBSTR)
LENGTH(ename) = 5 -- 長度過濾
SUBSTR(ename, 1, 3) = 'JAM' -- 前 3 字元 (索引從 1 開始)
SUBSTR(ename, 4) -- 第 4 字元到結尾
SUBSTR(ename, -3) -- 後 3 字元 (負索引從尾部)
SUBSTR(ename, LENGTH(ename)-2) -- 等同後 3 字元
去除空格與指定字元
LTRIM(' abc ') -- 移除左側空格
RTRIM(' abc ') -- 移除右側空格
TRIM(' abc ') -- 移除兩側空格
LTRIM('xyzadams','xyz') -- 移除左側 xyz
RTRIM('xyzadams','ams') -- 移除右側 ams
填充函數
LPAD('liunan',10,'*') -- ****liunan (左填充至 10 字元)
RPAD('liunan',10,'*') -- liunan**** (右填充)
RPAD(LPAD('liunan',10,'*'),14,'*') -- ****liunan**** (雙側)
ASCII 編碼互轉
ASCII('A') -- 65
ASCII('a') -- 97
CHR(65) -- 'A'
CHR(97) -- 'a'
實戰組合範例
-- 查詢姓名含 'A' 者,並將 A 替換為 _
SELECT ename, REPLACE(ename,'A','_') FROM emp;
-- 查詢姓名長度 >= 6
SELECT * FROM emp WHERE LENGTH(ename) >= 6;
-- 或
SELECT * FROM emp WHERE ename LIKE '______%';