2011-08-22 168 views
2

我有一個名稱爲ABC且具有CLOB數據的表。我想更新列以在此Clob列中的特定位置插入字符串。要插入更新Oracle中的Clob列

字符串:

<nv_pair> 
<name identifier="XYZ"></name> 
<value identifier="XYZ"></value> 
</nv_pair> 

CLOB數據:要插入

<form> <nv_pair></nv_pair> <nv_pair></nv_pair><nv_pair></nv_pair><nv_pair></nv_pair></form> 

位置:之前</form>

回答

4

看看DBMS_LOB包。順便說一下,可能值得探討放棄CLOB和使用Oracle內置XML功能的可能性(雖然我並不熟悉這一點)。

+0

+1爲XMLType的建議,儘管這將取決於數據庫版本是否是可能的(建議)切換。 – Wivani

2

取決於你有甲骨文的版本,你可以使用REGEXP_REPLACE功能:

update abc 
set clob_val = 
    regexp_replace(clob_val, 
       '^(.+)(</form>)', 
       '\1<nv_pair><name identifier="XYZ"></name><value identifier="XYZ">/value>/nv_pair>\2') 
where ... 
+0

錯過了替換中的「<」... – furman87