汉字转拼音的存储过程

iamlain 2006-06-29 09:44:30


create or replace function GetPinYin(Keyword in varchar2) return varchar2 as
i number;
j number;
PinYin varchar2(500);
Temp varchar2(10);
TempStr varchar2(2);
--oracle处理中英文混合字符串的bug,因此函数中采用在任何字符串前添加一个★号来强制oracle把此字符串当作双字节来处理
begin
i := 1;
j := Length('★' || Keyword);
PinYin := '';
while i <= j LOOP
tempStr := substr('★' || KeyWord, i, 1);
select hzpy --如果换成substr(HZPY, 1, 1)则是取首字母,嘿嘿
INTO Temp
from t_Pinyin
Where Num =
(select max(num) from t_Pinyin Where Num <= ASCII(TempStr));
Temp := Replace(Temp, '*', TempStr);
Temp := Replace(Temp, '★', '');
PinYin := PinYin || Temp;
i := i + 1;
End loop;
return(PinYin);

end GetPinYin;



这个是FOR ORACLE的版本
有没有高手能帮忙重写成MS-SQL 版本啊 多谢了
...全文
293 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
laowang2 2007-03-31
  • 打赏
  • 举报
回复
up
ojuju10 2007-03-31
  • 打赏
  • 举报
回复
楼上的存储过程不对!!!
iamlain 2006-06-29
  • 打赏
  • 举报
回复
--取汉字拼音的存储过程 原著Magic 修改 hey 2006.3.22

CREATE TABLE T_PINYIN (
   HZPY VARCHAR(10),
   NUM INT
  )

INSERT INTO T_PINYIN(HZPY,NUM) VALUES('★','41455')

INSERT INTO T_PINYIN(HZPY,NUM) VALUES('*','255')

INSERT INTO T_PINYIN(HZPY,NUM) VALUES('*','1')

INSERT INTO T_PINYIN(HZPY,NUM) VALUES('a','45217')

INSERT INTO T_PINYIN(HZPY,NUM) VALUES('ai','45219')
jixiaojie 2006-06-29
  • 打赏
  • 举报
回复
up
wk_1978 2006-06-29
  • 打赏
  • 举报
回复
收藏
iamlain 2006-06-29
  • 打赏
  • 举报
回复
CREATE function dbo.GetPinYin (@Keyword nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @i INT,
@j INT
declare @PinYin nvarchar(4000),
@temp nvarchar(4000),
@tempStr nvarchar(4000)
set @i =1
set @j = len( @Keyword)
set @PinYin = ''
while (@i<=@j)
begin
set @tempStr = substring(@Keyword,@i,1)
declare c1 cursor for select hzpy from t_Pinyin where num=(select max(num) from t_Pinyin Where Num <= ASCII(@tempStr))
open c1
FETCH C1 INTO @temp
set @Temp = replace(@temp,'*',@tempStr)
set @PinYin = @PinYin + @temp
set @i = @i +1
close c1
deallocate c1
end
return @PinYin
end

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧