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

Oracle UPDATE 部分字串替換技巧:TRANSLATE 函數實戰

     編輯:Oracle 資料庫基礎

問題場景

表 ZZ_FILE 欄位 ZZ02 存放類似 apyi/gpyi010 的字串,需將以 gpy 開頭的記錄中 apyi 替換為 gpyi,即僅替換部分子字串。

錯誤嘗試

UPDATE ZZ_FILE SET ZZ02[1] = 'G' WHERE ...; -- 語法錯誤,Oracle 不支援陣列式索引賦值

解決方案:TRANSLATE 函數

TRANSLATE(string, from_str, to_str) 可逐字元對應替換。若 from_str 出現多次,所有出現處皆會被替換。

實戰 SQL

UPDATE AA
SET B = TRANSLATE(B, 'apyi', 'gpyi')
WHERE SUBSTR(B, 6, 10) = 'gpyi';

說明:

  • TRANSLATE(B, 'apyi', 'gpyi') 將 a→g, p→p, y→y, i→i,實際上只改變首字元 a→g
  • WHERE SUBSTR(B, 6, 10) = 'gpyi' 限定僅處理第 6 碼起為 gpyi 的列,避免誤改其他資料

補充提醒

若欄位中有多組 apyi 皆會被替換;需精確控制替換範圍時,可結合 INSTR、SUBSTR、REPLACE 或正則表達式(REGEXP_REPLACE)處理。

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