需求描述:表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:扩展模式,忽略正则表达式中的空白字符。