oracle查询数据替换格式,Oracle使用正则表达式REGEXP_REPLACE替换xml格式文档中的数据...

需求描述:表TIMP_CONFIG中TEXT_DATA为clob类型,存储xml数据,

原数据为:

...

VAL_SOURCE,PORT_CODE,I_CODE,A_TYPE,M_TYPE

VAL_SOURCE,PORT_CODE,I_CODE,A_TYPE,M_TYPE,T_DATE

...

需要调整为:

...

VAL_SOURCE,PORT_CODE,HC_ID,I_CODE,A_TYPE,M_TYPE,ACCT_CODE

VAL_SOURCE,PORT_CODE,HC_ID,I_CODE,A_TYPE,M_TYPE,ACCT_CODE,T_DATE

...

其中有一段标签对会经常变,而且可能出现空格、换行等情况。

需求也只需替换表名为“TBSI_IR_VALUATION”对应的代码,这里就需要用正则表达式找到这段代码,然后进行替换

oracle脚本如下:

UPDATE TIMP_CONFIG

SET TEXT_DATA = REGEXP_REPLACE(TEXT_DATA,

'

'

VAL_SOURCE,PORT_CODE,HC_ID,I_CODE,A_TYPE,M_TYPE,ACCT_CODE

VAL_SOURCE,PORT_CODE,HC_ID,I_CODE,A_TYPE,M_TYPE,ACCT_CODE,T_DATE',

1,0,'n')

WHERE ID = 3;

regexp_replace函数说明如下

REGEXP_REPLACE(第一个是输入的字符串,第二个是正则表达式, 第三个是替换的字符,第四个是标识从第几个字符开始正则表达式匹配。(默认为1),第五个是标识第几个匹配组。(默认为全部都替换掉),第六个是是取值范围)函数

第六个是是取值范围:

i:大小写不敏感;

c:大小写敏感;

n:点号 . 不匹配换行符号;

m:多行模式;

x:扩展模式,忽略正则表达式中的空白字符。