我正在尝试使用oreplace更新表,但它不会让我说它超过了长度。我已经尝试将其分解为第一种方法中的多个 orplace 语句,以及第二种方法中的多个更新语句,但它仍然不起作用或给我想要的结果。
显然 orplace 最多只能返回 8000 个字符?如果是,那么解决方案/解决方法是什么?
第一种方法:
sel
oreplace (substr(text_val,1,8000),'CIM_OUTPUT','DD_CIM_OUTPUT')
|| oreplace (substr(text_val,8001,16000),'CIM_OUTPUT','DD_CIM_OUTPUT')
|| oreplace (substr(text_val,16001,18000),'CIM_OUTPUT','DD_CIM_OUTPUT')
from DB.TABLENAME ;
第二种方法:
这样做的问题是 text_val 在第一次更新后被截断,其余更新不适用于 text_Val 的完整值,因此将它们呈现为无用。
update DB.TABLENAME set text_val = oreplace (substr(text_val,1,8000),'CIM_OUTPUT','DD_CIM_OUTPUT');
update DB.TABLENAME set text_val = text_val||oreplace (substr(text_val,8001,16000),'CIM_OUTPUT','DD_CIM_OUTPUT');
update DB.TABLENAME set text_val = text_val || oreplace (substr(text_val,16001,18000),'CIM_OUTPUT','DD_CIM_OUTPUT');