首先使用REPLACE函数替换掉Oracle字段里面的换行和回车分隔符:
replace用法:replace('将要更改的字符串','被替换掉的字符串','替换字符串')
oracle 中chr()函数
CHR() --将ASCII码转换为字符
语法
CHR(number_code)
示例
select CHR(116) from dual; --返回't'
几个常用的chr()函数:
chr(9) --制表符
chr(10) --换行符
chr(13) --回车符
chr(32) --空格符
chr(34) --双引号“"”
create view v_dim_scheme_id_t as
select REPLACE(REPLACE(scheme_id,chr(10),''),chr(13),'') scheme_id , --chr(10):
REPLACE(REPLACE(scheme_level,chr(10),''),chr(13),'') scheme_level ,
REPLACE(REPLACE(scheme_type,chr(10),''),chr(13),'') scheme_type ,
REPLACE(REPLACE(scheme_name,chr(10),''),chr(13),'') scheme_name
from st.dim_scheme_id_t;
然后映射那边数据源字段对应的端口默认值也需要更改(具体看图片):
以上两步操作执行结束后,刷新映射重新导数即可!!!
replace函数还经常使用在更新表字段内容:
往Oracle 中导入数据时,有一个列导入的数据应该时‘2011-10-11’ 的格式,结果导入的数据为 ‘2011/10/11’格式的,5000多条记录要一条条改基本不可能。 后来想到了replace这个函数,具体用法如下:
update 表1 t set t.列1=replace((select 列1from 表1 a where a.主键列=t.主键列) , '/' , '-' ) 解决了我们问题。
replace 函数用法如下:
replace('将要更改的字符串','被替换掉的字符串','替换字符串')
例:select replace ('111222333444','222','888') from dual;
输出为 '111888333444'
注意:
(1)要替换掉多个字符的写法
REPLACE(REPLACE(scheme_level,chr(10),''),chr(13),'')
(2)不同写法的区别
REPLACE(REPLACE(字段,chr(10),''),chr(13),'')
REPLACE(字段,chr(10)||chr(13),'')