*****Oracle中的全角与半角转换*****

说明:Oracle表中的数据的全角与半角问题,现在处理起来已经不那么麻烦了,这里主要说明一下小细节,以便日后提醒自己,处理所用到的两个函数:

to_single_byte(tablename) ---转成半角
to_multi_byte(tablename) -----转成全角

 

例如下面一张表:

create table books(
    bid varchar2(15), --ID
    bname varchar2(50) not null , --书名
    bauthor varchar2(15) not null,--作者
    bname_pym varchar2(50) , 
    bauthor_pym varchar2(15),
    bpublic varchar2(50)
) ;

  

假如里面的书名被录入了很多全角字段,需要转换成半角方便以后查询,你会考虑到

update books set bname_pym = to_single_byte(bname) ;

 

 这里暂不考虑性能问题,全表更新;但是你会发现执行完全角并没有被更新,当时第一次碰到也蛮奇怪,下面写法就没有问题

 

declare 
    name varchar2(100) ; 
begin .
.................... 
    nmae:=to_single_byte(bname) ; 
..................... 
    update books set bname_pym = nmae; 
..................... 

 

 这段代码是伪代码,但这样写就不会有问题,后来经同事提醒考虑一下,原来to_single_byte这个函数返回的并不是字符(如果用过Java,可以理解成Object),所以需要强制转换一下,如下

update books set bname_pym = to_char(to_single_byte(bname)) ; 

 

 这样写就不会有问题,并且完成了转换的功能。

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值