回傳字元值的字串函數
| 函數 | 語法 | 功能說明 | 範例 |
| CHR | CHR(n) | 依編碼回傳字元,ASCII 反函數 | CHR(65) → 'A' |
| CONCAT | CONCAT(s1, s2) | 串接兩字串,等同 || | CONCAT('AB','CD') → 'ABCD' |
| INITCAP | INITCAP(str) | 每單字首字大寫,其餘小寫 | INITCAP('hello world') → 'Hello World' |
| LOWER/UPPER | LOWER(str)/UPPER(str) | 全轉小寫/大寫 | UPPER('AbC') → 'ABC' |
| LPAD/RPAD | LPAD(s1,n[,s2]) | 左/右填充至長度 n,預設空格 | LPAD('9',5,'0') → '00009' |
| LTRIM/RTRIM/TRIM | LTRIM(s1[,s2]) | 移除左/右/兩側指定字元(預設空格) | TRIM(' ABC ') → 'ABC' |
| REPLACE | REPLACE(s, old, new) | 替換所有 old 為 new,new 可省略(刪除) | REPLACE('A-B','-','') → 'AB' |
| SUBSTR | SUBSTR(s, pos[,len]) | 擷取子字串,pos 可為負(從右算) | SUBSTR('ABCDE',2,2) → 'BC' |
| TRANSLATE | TRANSLATE(s, from, to) | 逐字元對應替換,功能強於 REPLACE | TRANSLATE('123','12','AB') → 'AB3' |
| SOUNDEX | SOUNDEX(str) | 回傳發音代碼,模糊比對拼音相似詞 | SOUNDEX('SMITH') = SOUNDEX('SMYTHE') |
| NLS_INITCAP/LOWER/UPPER | NLS_UPPER(str[,param]) | 支援多語言排序規則的大小寫轉換 | NLS_UPPER('ß','NLS_SORT=XGERMAN') → 'SS' |
回傳數值的字串函數
| 函數 | 語法 | 功能說明 |
| ASCII | ASCII(str) | 回傳首字元編碼值 |
| INSTR | INSTR(s1, s2[, pos[, nth]]) | 搜尋 s2 在 s1 第 nth 次出現位置,pos 可負 |
| INSTRB | INSTRB(...) | 同 INSTR,但以位元組為單位 |
| LENGTH | LENGTH(str) | 字元長度 (CHAR 含尾端空格) |
| LENGTHB | LENGTHB(str) | 位元組長度 |
| NLSSORT | NLSSORT(str[,param]) | 回傳排序用二進位鍵值 |
實戰常見組合技
-- 1. 去除前後空格並統一大寫
UPPER(TRIM(col))
-- 2. 固定長度編號產生 (流水號左補 0)
LPAD(TO_CHAR(seq.NEXTVAL), 8, '0') -- 00000001
-- 3. 字串切分 (以逗號分隔)
SUBSTR(str, 1, INSTR(str, ',')-1) -- 第一段
-- 4. 多重替換 (TRANSLATE 單字元對應)
TRANSLATE(phone, '()- ', '') -- 移除電話號碼格式字元
-- 5. 模糊搜尋同音異寫
WHERE SOUNDEX(name) = SOUNDEX('Johnson')
字元型別儲存上限提醒
VARCHAR2:4,000 位元組 (8i 以上)
CHAR:2,000 位元組
CLOB:4 GB
- PL/SQL 變數
VARCHAR2 可達 32,767 位元組