JAVA—咖啡馆

——欢迎访问rogerfan的博客,常来《JAVA——咖啡馆》坐坐,喝杯浓香的咖啡,彼此探讨一下JAVA技术,交流工作经验,分享JAVA带来的快乐!本网站部分转载文章,如果有版权问题请与我联系。

BlogJava 首页 新随笔 联系 聚合 管理
  447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

create or replace function f_ywm(chinese1 in varchar2)
return varchar2
/*
说明:此函数用于获取汉字的拼音声母,本函数只生成前10位汉字音序码。
用法:将要处理的字符作为参数传给此函数。

示例:
SQL> select f_ywm('我爱中华') from dual ;
输出:WAZH
*/
is
ls_one_hz varchar2(10);
ls_temp_py varchar2(100);
li_length integer;
i integer;
j integer;
li_count integer;
ls_py varchar2(100);
begin
    li_length := length(rtrim(ltrim(chinese1)));
    if nvl(li_length,0)=0 then
       li_length:=0;
    end if;
    ls_py := '';
    ls_one_hz := '';
    ls_temp_py := '';
    i := 1;
    LOOP
 if i > li_length then
  exit;
 end if;
        if length(ls_py) > 10 then
  exit;
 end if;
 ls_one_hz := substr(chinese1,i,1);
 if ascii(ls_one_hz) > 128 then
  ls_one_hz := substr(chinese1,i,1);
  --i := i + 1;

  select count(*) into li_count from t_ywm_zk where z = ls_one_hz;
  if li_count > 0 then
    select n into ls_temp_py from t_ywm_zk where z = ls_one_hz;
     if sqlcode < 0 then
                return('错误');
             end if;
   if ls_temp_py is null then
       ls_temp_py := '?';
    end if;
  else
     ls_temp_py := '?';
  end if;
  ls_temp_py := upper(ls_temp_py);
  ls_py := ls_py||ls_temp_py;
 elsif ascii(ls_one_hz) <> 32 then
  ls_one_hz := upper(ls_one_hz);
  ls_py := ls_py||ls_one_hz;
 end if;
 i := i + 1;
   END LOOP;
   return ls_py;
end;

posted on 2014-07-16 11:58 rogerfan 阅读(2986) 评论(0)  编辑  收藏 所属分类: 【数据库】

只有注册用户登录后才能发表评论。


网站导航: