首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 字元型函數完全指南(一):核心函數詳解與實戰範例

     編輯:Oracle 資料庫相關知識

在 Oracle 資料庫開發中,字元函數是處理字串資料的基石。本文系統整理了 Oracle 中最常用的字元型函數,涵蓋 ASCII 轉換、字串連接、大小寫控制、長度計算、子字串搜尋等核心功能,並附上詳細的參數說明與實戰 SQL 範例,助你快速掌握字串操作技巧。

一、ASCII 與 CHR:字元與編碼的雙向轉換

ASCII(x1)

功能:回傳字串最左側字元的 ASCII 碼值(數值型)。

參數:x1 為字元運算式。

範例:

SELECT ascii('A') AS A, ascii('a') AS a, ascii(' ') AS space, ascii('示') AS hz FROM dual;
-- 結果:65, 97, 32, 51902

注意:純數字字串可不加引號,含其他字元必須用單引號括起;若最左側為漢字,僅取其左半部字元的 ASCII 碼。互反函數為 CHR()。

CHR(n1)

功能:將 ASCII 碼轉換為對應字元(字元型)。

參數:n1 為 0~255 的整數。

範例:

SELECT chr(54740) AS zhao, chr(65) AS chr65 FROM dual;
-- 結果:趙, A

二、CONCAT 與 ||:字串連接的兩種寫法

功能:連接兩個字串,等同於 c1 || c2。

範例:

SELECT concat('010-','88888888') || '轉23' AS 電話 FROM dual;
-- 結果:010-88888888轉23

三、大小寫轉換函數家族

函數功能範例
INITCAP(c1)首字母大寫,其餘小寫initcap('smith abc aBC') → 'Smith Abc Abc'
LOWER(c1)全轉小寫lower('AaBbCcDd') → 'aabbccdd'
UPPER(c1)全轉大寫upper('AaBbCcDd') → 'AABBCCDD'
NLS_INITCAP(x[,y])支援 NLS 參數的首字母大寫nls_initcap('a c b d e','nls_sort=SCHINESE_PINYIN_M')
NLS_LOWER(x[,y])支援 NLS 參數的全小寫同上,參數 y 可指定排序規則
NLS_UPPER(x[,y])支援 NLS 參數的全大寫同上

NLS 參數說明:y 可選,如 nls_sort=SCHINESE_RADICAL_M(部首筆畫)、SCHINESE_STROKE_M(筆畫部首)、SCHINESE_PINYIN_M(拼音)。可透過 SELECT * FROM nls_database_parameters; 查詢資料庫級 NLS 設定。

四、INSTR / INSTRB:字串搜尋定位

語法:INSTR(C1, C2[, I[, J]])

  • C1:被搜尋字串
  • C2:目標字串
  • I:起始位置(預設 1,負數表從右往左)
  • J:第 J 次出現(預設 1)

差異:

  • INSTR:多位元組字元(漢字、全形)按 1 個字元計算
  • INSTRB:按位元組計算(通常雙位元組字元算 2)

範例:

SELECT instr('oracle traning','ra',1,2) FROM dual; -- 返回 9
SELECT instr('重慶某軟件公司','某',1,1), instrb('重慶某軟件公司','某',1,1) FROM dual; -- 返回 3, 5

五、長度計算函數群:LENGTH 系列

函數計算單位說明
LENGTH(c1)字元數依資料庫字元集計算字元個數
LENGTHB(c1)位元組數回傳字串佔用的 byte 數
LENGTHC(c1)Unicode 字元數使用純 Unicode 計算
LENGTH2(c1)UCS2 字元數使用 UCS2 編碼計算
LENGTH4(c1)UCS4 字元數使用 UCS4 編碼計算

常用對比:

SELECT length('高乾競'), lengthb('高乾競') FROM dual; -- 3, 6
SELECT length('你好'), lengthb('你好'), lengthc('你好'), length2('你好'), length4('你好') FROM dual;

掌握這些函數的細微差異,能讓你在處理多語言、多字元集資料時遊刃有餘。下一篇將進階介紹 SUBSTR、REPLACE、TRIM 等進階字串操作函數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved