在一些系统中需要将中文转换成拼音,例如'阿莫西林' 转换成 '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数据量很大的时候,效率会有些低,遇到这种情况时候,我都是一部部份来处理。
在此抛砖引玉,期望各位大侠能提出更好的解决方案。