vfp中如何将汉字转为拼音
流星尔 2003-08-07 10:00:37 1、vfp函数(摘自myf1,改正了其中的参数中有空格的BUG)
******汉字转拼音*****
func hztostr(hzstr) as string
local py,i,j,c
private p0
p0="吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗"
py=""
for i=1 to lenc(hzstr)
C='z'
IF EMPTY(ALLTRIM(SUBSTRC(hzstr,i,1)))
c=''
ELSE
for j=1 to 26
if substrc(hzstr,i,1)<substrc(p0,j,1)
C=chr(95+j)
EXIT
endif
NEXT
endif
py=py+C
next
retu py
在vfp中调用
set proc to sysproc
?hztostr('刘建军') 结果显示ljj
2、sql server用户自定义函数
CREATE function dbo.hztostr(@hzstr varchar(200))
returns varchar(400)
as
begin
declare @py varchar(800),@i int,@j int,@c varchar(10),@p0 varchar(800),@cSTR varchar(10)
set @p0='吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗'
set @py=''
set @i=1
set @j=1
while @i<=len(@hzstr)
begin
set @c='z'
set @cSTR=substring(@hzstr,@i,1)
if @cstr=''
set @c=''
else
begin
if not unicode(@cSTR) between 19968 and 40870
set @c=@cSTR
else
set @j=1
while @j<=26
begin
if @cSTR<substring(@p0,@j,1)
begin
set @c=char(95+@j)
break
end
set @j=@j+1
end
end
set @py=@py+@c
set @i=@i+1
end
return @py
end
go
然后在查询分析中调用
select dbo.hztostr('刘建军') 结果显示ljj