• Oracle 函数取汉字的拼音首字母


    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;

  • 相关阅读:
    Ubuntu使用之Svn命令小技巧
    Android
    Python&amp;MySQL&amp;PyQt
    YII进行数据增删改查分析
    UVA270-Lining Up
    block高级功能
    HDU-2665-Kth number(划分树)
    Android模糊演示样例-RenderScript-附效果图与代码
    HTTP状态码具体解释
    近期写的一个控件——Well Swipe beta 1.0
  • 原文地址:https://www.cnblogs.com/BetterWF/p/2591617.html
Copyright © 2020-2023  润新知