中文名转换成拼音

来源:互联网 发布:全球创意城市网络 编辑:程序博客网 时间:2024/05/16 19:09

    在一些系统中需要将中文转换成拼音,例如'阿莫西林' 转换成 'AMXL','玉麦清火片'转换成'YMQHP'等等。实现方案如下:

---表spinfo中的spmch字段是中文字段,pym表示拼音码字段,spid是内码。根据实际替换:spinfo,spid,spmch便可

 

declare @m1 int,@m2 int, @spmch varchar(40),@shurz varchar(10),@pym varchar(40),@spid char(11)

set @m1=0
set @m2=1
set @spmch=''
set @shurz=''
set @pym=''
set @spid=''

    DECLARE zkh_Cursor CURSOR FOR
      select spid,spmch from #zkh --where beactive='是'
 OPEN zkh_Cursor
 FETCH NEXT FROM zkh_Cursor into @spid,@spmch
 WHILE @@FETCH_STATUS = 0
 BEGIN
     select @m1=len(spmch) from #zkh where spid=@spid
   While @m2<=@m1
            begin
              select @shurz=substring(@spmch,@m2,1)
              select @pym=rtrim(@pym)+rtrim(pym) from hz_pym where hanzi=@shurz
              set @m2=@m2+1
            end
            update #zkh set new_pym=@pym where spid=@spid
            set @m2=1
            set @pym=''
      
   FETCH NEXT FROM zkh_Cursor into @spid,@spmch
 END
 CLOSE zkh_Cursor
 DEALLOCATE zkh_Cursor


update a set a.pym=b.new_pym from spinfo a,#zkh b where a.spid=b.spid and a.pym<>b.new_pym

 

--说明:由于用了游标,故spinfo数据量很大的时候,效率会有些低,遇到这种情况时候,我都是一部部份来处理。

  在此抛砖引玉,期望各位大侠能提出更好的解决方案。

原创粉丝点击