实际数据处理时,字段值中含有 tab 符和换行符 时,需要将其替换掉。
现在使用多次嵌套 replace 进行处理,
select replace(replace(t.notes,chr(9)),chr(10)) from table_name t;但由于源表数据量很大,对系统性能影响较大,现打算一次替换操作将其实现,求妙招!!貌似可以使用正则表达式函数 regexp_replace 实现??
现在使用多次嵌套 replace 进行处理,
select replace(replace(t.notes,chr(9)),chr(10)) from table_name t;但由于源表数据量很大,对系统性能影响较大,现打算一次替换操作将其实现,求妙招!!貌似可以使用正则表达式函数 regexp_replace 实现??
SELECT REGEXP_REPLACE('test'||chr(9)||chr(10),'\s*$','') || 'test2' from dual;
declare
s varchar2(100):='hello'||chr(9)||'world'||chr(10)||'Tom';
begin
dbms_output.put_line(s);
dbms_output.put_line('replace:');
dbms_output.put_line(replace(replace(s,chr(10),'+'),chr(9),'+'));
dbms_output.put_line('trnslate:');
dbms_output.put_line(translate(s,chr(9)||chr(10),'-'));
dbms_output.put_line('regexp_replace:');
dbms_output.put_line(regexp_replace(s,'['||chr(9)||chr(10)||']+','_'));
end;
/
translate(t.notes,'#'||chr(9)||chr(10),'#'),
regexp_replace(t.notes,'['||chr(9)||chr(10)||']','')
from table_name t;translate 是以字符为单位进行提取、替换的,需注意对于汉字的匹配和字符集的设置有关,其用法需再研究