首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 字符處理四大實戰技巧:LTRIM 去尾空格、RPAD 頭部填充/截取、大小寫標準化、REPLACE 復雜替換

     編輯:Oracle 資料庫基礎

字符數據清洗是數據治理基礎工程。本文匯總 Oracle 四大高頻字符處理場景:去除尾部空格、頭部填充與截取、大小寫三級標準化、業務語義替換,附函數組合進階用法。

一、去除尾部空格:LTRIM/RTRIM/TRIM

-- 預設去除左右空格
TRIM('  DT001  ')        -- 'DT001'
LTRIM('  DT001')         -- 'DT001'(左側)
RTRIM('DT001  ')         -- 'DT001'(右側)
-- 指定字符集
LTRIM('xyDT001xy', 'xy') -- 'DT001xy'(遇非 x/y 停止)

實戰

應用層未修剪導致 'DT001 ' 與 'DT001' 不匹配。ETL 階段統一 RTRIM(prod_code) 或視圖層 CREATE VIEW v_prod AS SELECT RTRIM(prod_code) AS prod_code ...。

二、頭部填充與截取:RPAD/LPAD

-- 填充至指定長度
RPAD('DT001', 6, 'F')    -- 'DT001F'(右側填充 F)
LPAD('001', 5, '0')      -- '00001'(左側補零)
-- 截取:源長度 > 目標長度時從右/左截取
RPAD('PSD001', 1)        -- 'P'(取首字符,右側截取)
LPAD('PSD001', 3)        -- 'PSD'(取前 3 字符)

實戰

  • 編碼擴展:原 5 位編碼,包裝材料類頭部加 B、客供品加 C、輔料加 F → RPAD(prod_code, 6, type_flag) + WHERE 條件分類更新
  • 報表截取:RPAD(prod_code, 1) 直接提取類別碼,簡化報表邏輯

三、大小寫三級標準化:UPPER/LOWER/INITCAP


UPPER('abc DEF')     -- 'ABC DEF'(全大寫)
LOWER('ABC def')     -- 'abc def'(全小寫)
INITCAP('hello world') -- 'Hello World'(每詞首字母大寫,分隔符:空格/標點/控制字符)

實戰

  • 歷史數據大小寫混亂 → 批量 UPDATE prod SET prod_code = UPPER(prod_code)
  • 英文地址/姓名規範化 → INITCAP(address)
  • 配合 WHERE LOWER(prod_code) != UPPER(prod_code) 精準定位需修正行

四、復雜語義替換:REPLACE 組合函數


-- 基礎替換
REPLACE('下沙市某某鋼鐵廠', '下沙市', '下沙區')  -- '下沙區某某鋼鐵廠'
REPLACE(addr, '下沙市', '下沙區')  -- 僅影響目標片段,不波及 '杭州市'
-- 巢狀組合:截取編碼前綴 → 語義替換
REPLACE(RPAD(prod_code, 2), 'ZD', '自動工具')  -- 'P自動工具'
REPLACE(LPAD(prod_code, 3), 'SD', '手動工具')  -- '手動工具001'

進階模式

REPLACE 參數均可為函數/表達式,構建「提取 → 映射 → 替換」管道,實現報表友好顯示。

綜合建議

  • 數據入庫前統一清洗(LTRIM/RTRIM/UPPER),源頭治理
  • 視圖層封裝格式化邏輯(RPAD/INITCAP/REPLACE),應用層零感知
  • 大批量更新分批提交,避免 UNDO 爆滿、鎖升級
  • 建立字符處理函數庫(Package),統一標準、便於維護
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved