oracle中有没有办法,把汉字转为拼音

 我来答
建孤云UJ
推荐于2017-12-15 · 知道合伙人互联网行家
建孤云UJ
知道合伙人互联网行家
采纳数:1928 获赞数:12559
入职之后主要从事网站优化、网络营销。自媒体运营一类的工作。

向TA提问 私信TA
展开全部
这是转换成拼音第一个字母的
create or replace function Calcu_pydm(
as_InputString IN VARCHAR --输入字符串
)
RETURN VARCHAR2
IS
ll_pos NUMBER ;
tmp VARCHAR2(4) ;
ls_ReturnStr VARCHAR2(8000);
begin
ll_pos :=1;
ls_ReturnStr := '';
WHILE ll_pos <= LENGTH(as_InputString)
LOOP
tmp := SubStr(as_InputString,ll_pos,1);
if ASCII(tmp) > 128 then
if tmp>= '匝' then
ls_ReturnStr := ls_ReturnStr || 'Z';
end if;
if tmp>= '丫' and tmp< '匝' then
ls_ReturnStr := ls_ReturnStr || 'Y';
end if;
if tmp>= '夕' and tmp< '丫' then
ls_ReturnStr := ls_ReturnStr || 'X';
end if;
if tmp>= '哇' and tmp< '夕' then
ls_ReturnStr := ls_ReturnStr || 'W';
end if;
if tmp>= '他' and tmp< '哇' then
ls_ReturnStr := ls_ReturnStr || 'T';
end if;
if tmp>= '撒' and tmp< '他' then
ls_ReturnStr := ls_ReturnStr || 'S';
end if;
if tmp>= '然' and tmp< '撒' then
ls_ReturnStr := ls_ReturnStr || 'R';
end if;
if tmp>= '七' and tmp< '然' then
ls_ReturnStr := ls_ReturnStr || 'Q';
end if;
if tmp>= '趴' and tmp< '七' then
ls_ReturnStr := ls_ReturnStr || 'P';
end if;
if tmp>= '哦' and tmp< '趴' then
ls_ReturnStr := ls_ReturnStr || 'O';
end if;
if tmp>= '拿' and tmp< '哦' then
ls_ReturnStr := ls_ReturnStr || 'N';
end if;
if tmp>= '妈' and tmp< '拿' then
ls_ReturnStr := ls_ReturnStr || 'M';
end if;
if tmp>= '廓' and tmp< '妈' then
ls_ReturnStr := ls_ReturnStr || 'L';
end if;
if tmp>= '咖' and tmp< '廓' then
ls_ReturnStr := ls_ReturnStr || 'K';
end if;
if tmp>= '讥' and tmp< '咖' then
ls_ReturnStr := ls_ReturnStr || 'J';
end if;
if tmp>= '哈' and tmp< '讥' then
ls_ReturnStr := ls_ReturnStr || 'H';
end if;
if tmp>= '嘎' and tmp< '哈' then
ls_ReturnStr := ls_ReturnStr || 'G';
end if;
if tmp>= '发' and tmp< '嘎' then
ls_ReturnStr := ls_ReturnStr || 'F';
end if;
if tmp>= '讹' and tmp< '发' then
ls_ReturnStr := ls_ReturnStr || 'E';
end if;
if tmp>= '搭' and tmp< '讹' then
ls_ReturnStr := ls_ReturnStr || 'D';
end if;
if tmp>= '擦' and tmp< '搭' then
ls_ReturnStr := ls_ReturnStr || 'C';
end if;
if tmp>= '八' and tmp< '擦' then
ls_ReturnStr := ls_ReturnStr || 'B';
end if;
if tmp>= '啊' and tmp< '八' then
ls_ReturnStr := ls_ReturnStr || 'A';
end if;
if tmp< '啊' then
ls_ReturnStr := ls_ReturnStr || SubStr(as_InputString,ll_pos,1);
end if;
else
ls_ReturnStr :=ls_ReturnStr || SubStr(as_InputString,ll_pos,1);
end if;
ll_pos := ll_pos + 1 ;
end loop;
ls_ReturnStr := lower(rtrim(ltrim(ls_ReturnStr)));
return ls_ReturnStr;
end ;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式