ORACLE的utl_raw函数在不同字符集的数据库中的用法

博客讲述了在Oracle数据库中,由于源库和目标库字符集不兼容导致的问题及解决方案。通过使用utl_raw包中的cast_to_raw和cast_to_varchar2函数,实现了远程数据库之间的中文字符正确转换,避免了数据迁移过程中的乱码问题。步骤包括在源库将中文字段转为raw类型,然后在目标库再转换回varchar2类型进行插入。
摘要由CSDN通过智能技术生成

utl_raw函数讲的很详细值得看看

可以了解了解

首先都是roalce数据库,网络通的,直接做个远程连接就可以了,心理偷着乐了一把,后来发现我高兴得早了点,原因是,对方的数据库字符集(AMERICAN_AMERICA.ZHS16GBK)和本地端的数据库字符集(AMERICAN_AMERICA.WE8ISO8859P1)不兼容,而原表中又存在中问字符,后来翻阅相关文档,找到资料,在双方的数据库中不用修改任何东西,使用utl_raw包,就能解决这一问题:

1:在对方端,由于不能直接访问原来的表,所以让对方将该表中的中文字符使用utl_raw.cast_to_raw将中文转换成raw类型后放在一个view中

Create view v_t as select id,data,cardid,utl_raw.cast_to_raw(name) from t;

2:再将视图中的raw转换成varchar2类型就可以了

现在可以直接insert了:

Insert into birth_his select id,data,cardid,utl_raw.cast_to_varchar2(name) from ;

这样放在本地的数据库中,访问的时候就不会出现乱码。

注:

cast_to_raw()要在源库用

cast_to_varchar2()要在目标库用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值