單行字串函數接受字串輸入,回傳字串或數值結果,是 SQL 與 PL/SQL 字串處理的基石。以下依功能分類整理常用函數。
| 函數 | 說明 | 範例 |
|---|---|---|
ASCII(c) | 回傳第一個字元的 ASCII/編碼值 | ASCII('a') → 97 |
CHR(n) | 回傳編碼值對應字元(反函數) | CHR(97) → 'a' |
| 函數/運算子 | 說明 | 範例 |
|---|---|---|
CONCAT(s1, s2) | 連接兩字串,任一為 NULL 回傳另一 | CONCAT('ab','cd') → 'abcd' |
s1 || s2 | 連接運算子,功能同 CONCAT | 'ab' || 'cd' → 'abcd' |
| 函數 | 說明 | 範例 |
|---|---|---|
UPPER(s) | 全大寫 | UPPER('AbC') → 'ABC' |
LOWER(s) | 全小寫 | LOWER('AbC') → 'abc' |
INITCAP(s) | 每個單字首字母大寫,其餘小寫 | INITCAP('hello world') → 'Hello World' |
| 函數 | 說明 | 範例 |
|---|---|---|
LENGTH(s) | 字元長度 | LENGTH('中文') → 2 |
LENGTHB(s) | 位元組長度 | LENGTHB('中文') → 6 (UTF-8) |
| 函數 | 語法 | 說明 | 範例 |
|---|---|---|---|
INSTR | INSTR(src, target [, pos [, occ]]) | 搜尋 target 在 src 中第 occ 次出現位置,從 pos 開始 | INSTR('mississippi','i',3,3) → 11 |
INSTRB | 同 INSTR,但以位元組計算 | ||
SUBSTR | SUBSTR(src, pos [, len]) | 從 pos 擷取 len 字元,len 省略則到尾 | SUBSTR('message',1,4) → 'mess' |
SUBSTRB | 同 SUBSTR,以位元組計算 |
| 函數 | 語法 | 說明 | 範例 |
|---|---|---|---|
LPAD | LPAD(s, n [, pad]) | 左側以 pad 填充至長度 n | LPAD('abc',6,'*') → '***abc' |
RPAD | RPAD(s, n [, pad]) | 右側填充 | RPAD('abc',6,'*') → 'abc***' |
LTRIM | LTRIM(s [, set]) | 移除左側出現在 set 中的字元(預設空白) | LTRIM(' abc') → 'abc' |
RTRIM | RTRIM(s [, set]) | 移除右側 | RTRIM('abc ') → 'abc' |
TRIM | TRIM([LEADING|TRAILING|BOTH] [c] FROM s) | 標準 SQL 修剪,支援指定字元 | TRIM('x' FROM 'xxabcxx') → 'abc' |
| 函數 | 語法 | 說明 | 範例 |
|---|---|---|---|
REPLACE | REPLACE(s, old, new) | 將 s 中所有 old 替換為 new | REPLACE('uptown','up','down') → 'downtown' |
TRANSLATE | TRANSLATE(s, from, to) | 逐字元對應替換(from 第 i 字 → to 第 i 字) | TRANSLATE('fumble','uf','ar') → 'ramble' |
| 函數 | 說明 | 範例 |
|---|---|---|
SOUNDEX(s) | 回傳發音相似代碼(英文名匹配) | SOUNDEX('Smith') → 'S530' |
INSTR 搭配 SUBSTR 可實現靈活切分:SUBSTR(col, 1, INSTR(col, ',')-1) 取逗號前段。TRIM 僅能指定「單一字元」,多字元需用 LTRIM/RTRIM 疊加。LENGTHB/INSTRB/SUBSTRB 才能精確控制位元組邊界。