汉字返回拼音,多音字使用[]返回每个读音。

create or replace function f_hanzi_to_pinyin
(v_hanzi nvarchar2) return varchar2 is
v_pinyin nvarchar2(1000);

m_length integer;
m_single_hanzi nvarchar2(2);
m_pinyin nvarchar2(50);
m_py_count integer;
begin
m_length:=length(v_hanzi);
v_pinyin:='';

if v_hanzi is null then
return '*';
end if;

for i in 1..m_length loop
m_pinyin:=null;
m_single_hanzi:=substr(v_hanzi,i,1);

if (ascii(m_single_hanzi) between 33 and 128) then
m_pinyin:=null;
else
declare
cursor c_py is
select s.pinyin
from t_py_char s
where s.hanzi like '%'||m_single_hanzi||'%';
begin
m_py_count:=0;
for r in c_py loop
m_pinyin:=m_pinyin||' '||r.pinyin;
m_py_count:=m_py_count+1;
end loop;
if m_py_count>1 then
m_pinyin:=' ['||trim(m_pinyin)||']';
end if;
exception
when others then
m_pinyin:='';
end;
end if;
v_pinyin:=v_pinyin||m_pinyin;
end loop;

return(trim(v_pinyin));
exception
when others then
return('*');
end ;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/77580/viewspace-212676/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/77580/viewspace-212676/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值