zoukankan      html  css  js  c++  java
  • 汉字转成拼音

    CREATE OR REPLACE FUNCTION GetHzPYCAP(p_String varchar2) --?????
     RETURN VARCHAR2 IS
    --declare
     --p_String varchar2(200) := '???????';
     v_char varchar2(2);  --????
     n_loop number;    --??
     n_len number;     --????
     n_ascii number;   --??ASCII?
     n_ord_high number; --n_ascii/156
     n_ord_low number;  --n mod 256
     n_temp number;
     n_temp1 number;
     v_PY varchar2(32767);
    
    BEGIN
    
    if p_String IS NULL  then
      RETURN '';
     end if;
    
      v_PY := '';
      n_len := length(p_String);
      FOR n_loop IN 1..n_len LOOP
        v_char := substr(p_string,n_loop,1);
        IF upper(v_char) IN (
            'A','B','C','D','E','F','G',
            'H','I','J','K','L','M','N',
            'O','P','Q','R','S','T',
            'U','V','W','X','Y','Z',
            '0','1','2','3','4','5','6','7','8','9',
            '(', ')', '[', ']','.', '!', '@', '#', '$',
            '%', '^', '&', '*', '-', '+','<', '>', '?', ':', '"')  THEN
          v_PY := v_PY||v_char;
        ELSE
            n_ascii := ascii(v_char);
            n_ord_high := trunc(n_ascii/256,0);
            n_ord_low := n_ascii-(n_ord_high*256);
            --DBMS_OUTPUT.PUT_LINE('n_ascii = '||to_char(n_ascii,'9999999'));
            --DBMS_OUTPUT.PUT_LINE('n_ord_high = '||to_char(n_ord_high,'9999999'));
            --DBMS_OUTPUT.PUT_LINE('n_ord_low = '||to_char(n_ord_low,'9999999'));
            IF (n_ord_high>128) and (n_ord_low>63) THEN
              CASE n_ord_high
                WHEN 162 THEN     --????
                  IF n_ord_low>160 THEN
                    v_PY := v_PY||get_roma_num_py(n_ord_low-160);
                  END IF;
                WHEN 163 THEN     --??ASCII
                  IF n_ord_low>128 THEN
                    v_char := chr(n_ord_low-128);
                    IF upper(v_char) IN (
                       'A','B','C','D','E','F','G',
                       'H','I','J','K','L','M','N',
                       'O','P','Q','R','S','T',
                       'U','V','W','X','Y','Z',
                       '0','1','2','3','4','5','6','7','8','9',
                       '(', ')', '[', ']') THEN
                      v_PY := v_PY||v_char;
                    END IF;
                  END IF;
                WHEN 166 THEN     --????
                  IF (n_ord_low>160) AND (n_ord_low<185) THEN --A1--B8
                    v_PY := v_PY||get_greece_alphabet_py(n_ord_low-160);
                  ELSE
                    IF (n_ord_low>192) AND (n_ord_low<217) THEN --C1--D8
                      v_PY := v_PY||get_greece_alphabet_py(n_ord_low-192);
                    END IF;
                  END IF;
                ELSE
                BEGIN
                  n_temp := n_ord_high-128;
                  n_ord_low := n_ord_low-63;
                  n_temp1 := trunc(n_temp/10,0);
                  n_temp1 := n_temp-n_temp1*10;
                  IF n_temp1=0 THEN
                    n_temp1 := 10;
                  END IF;
                  --DBMS_OUTPUT.PUT_LINE('n_temp = '||to_char(n_temp,'9999999'));
                  --DBMS_OUTPUT.PUT_LINE('n_temp1 = '||to_char(n_temp1,'9999999'));
                  CASE
                  WHEN n_temp<11 THEN
                    n_temp1 := get_py_index_01(n_temp1,n_ord_low);
                  WHEN n_temp<21 THEN
                    n_temp1 := get_py_index_02(n_temp1,n_ord_low);
                  WHEN n_temp<31 THEN
                    n_temp1 := get_py_index_03(n_temp1,n_ord_low);
                  WHEN n_temp<41 THEN
                    n_temp1 := get_py_index_04(n_temp1,n_ord_low);
                  WHEN n_temp<51 THEN
                    n_temp1 := get_py_index_05(n_temp1,n_ord_low);
                  WHEN n_temp<61 THEN
                    n_temp1 := get_py_index_06(n_temp1,n_ord_low);
                  WHEN n_temp<71 THEN
                    n_temp1 := get_py_index_07(n_temp1,n_ord_low);
                  WHEN n_temp<81 THEN
                    n_temp1 := get_py_index_08(n_temp1,n_ord_low);
                  WHEN n_temp<91 THEN
                    n_temp1 := get_py_index_09(n_temp1,n_ord_low);
                  WHEN n_temp<101 THEN
                    n_temp1 := get_py_index_10(n_temp1,n_ord_low);
                  WHEN n_temp<111 THEN
                    n_temp1 := get_py_index_11(n_temp1,n_ord_low);
                  WHEN n_temp<121 THEN
                    n_temp1 := get_py_index_12(n_temp1,n_ord_low);
                  WHEN n_temp<121 THEN
                    n_temp1 := get_py_index_13(n_temp1,n_ord_low);
                  ELSE
                    n_temp1 := 0;
                  END CASE;
                  v_PY := v_PY||substr(GetHzPY_by_index(n_temp1),1,1);
                END;
              END CASE;
            END IF;
        END IF;
      END LOOP;
      RETURN v_PY;
      --DBMS_OUTPUT.PUT_LINE(v_PY);
    END GetHzPYCAP;
    /
    
    
    CREATE OR REPLACE FUNCTION FTGM.GetHzPY_by_index(
      p_PY_Index number)
     RETURN VARCHAR2 IS
     v_PY_List THZPY_LIST :=  THZPY_LIST(
        'a',      'aes',    'ai',     'an',     'ang',    'ao',     'ba',     'bai',    'baike',  'baiwa',
        'ban',    'bang',   'bao',    'be',     'bei',    'ben',    'beng',   'bi',     'bia',    'bian',
        'biao',   'bie',    'bin',    'bing',   'bo',     'bu',     'ca',     'cai',    'cal',    'can',
        'cang',   'cao',    'ce',     'cen',    'ceng',   'ceok',   'ceom',   'ceon',   'ceor',   'cha',
        'chai',   'chan',   'chang',  'chao',   'che',    'chen',   'cheng',  'chi',    'chong',  'chou',
        'chu',    'chua',   'chuai',  'chuan',  'chuang', 'chui',   'chun',   'chuo',   'ci',     'cis',
        'cong',   'cou',    'cu',     'cuan',   'cui',    'cun',    'cuo',    'da',     'dai',    'dan',
        'dang',   'dao',    'de',     'defa',   'dei',    'deli',   'dem',    'den',    'deng',   'deo',
        'di',     'dia',    'dian',   'diao',   'die',    'dim',    'ding',   'diu',    'dong',   'dou',
        'du',     'duan',   'dug',    'dui',    'dul',    'dun',    'duo',    'e',      'ei',     'en',
        'eng',    'eo',     'eol',    'eom',    'eos',    'er',     'fa',     'fan',    'fang',   'fei',
        'fen',    'feng',   'fenwa',  'fiao',   'fo',     'fou',    'fu',     'fui',    'ga',     'gad',
        'gai',    'gan',    'gang',   'gao',    'ge',     'gei',    'gen',    'geng',   'geo',    'geu',
        'gib',    'go',     'gong',   'gongli', 'gou',    'gu',     'gua',    'guai',   'guan',   'guang',
        'gui',    'gun',    'guo',    'ha',     'hai',    'hal',    'han',    'hang',   'hao',    'haoke',
        'he',     'hei',    'hem',    'hen',    'heng',   'heui',   'ho',     'hol',    'hong',   'hou',
        'hu',     'hua',    'huai',   'huan',   'huang',  'hui',    'hun',    'huo',    'hwa',    'hweong',
        'i',      'ji',     'jia',    'jialun', 'jian',   'jiang',  'jiao',   'jie',    'jin',    'jing',
        'jiong',  'jiu',    'jou',    'ju',     'juan',   'jue',    'jun',    'ka',     'kai',    'kal',
        'kan',    'kang',   'kao',    'ke',     'keg',    'kei',    'kem',    'ken',    'keng',   'keo',
        'keol',   'keop',   'keos',   'keum',   'ki',     'kong',   'kos',    'kou',    'ku',     'kua',
        'kuai',   'kuan',   'kuang',  'kui',    'kun',    'kuo',    'kweok',  'kwi',    'la',     'lai',
        'lan',    'lang',   'lao',    'le',     'lei',    'lem',    'len',    'leng',   'li',     'lia',
        'lian',   'liang',  'liao',   'lie',    'lin',    'ling',   'liu',    'liwa',   'lo',     'long',
        'lou',    'lu',     'luan',   'lue',    'lun',    'luo',    'lv',     'm',      'ma',     'mai',
        'man',    'mang',   'mangmi', 'mao',    'mas',    'me',     'mei',    'men',    'meng',   'meo',
        'mi',     'mian',   'miao',   'mie',    'min',    'ming',   'miu',    'mo',     'mol',    'mou',
        'mu',     'myeo',   'myeon',  'myeong', 'n',      'na',     'nai',    'nan',    'nang',   'nao',
        'ne',     'nei',    'nem',    'nen',    'neng',   'neus',   'ng',     'ngag',   'ngai',   'ngam',
        'ni',     'nian',   'niang',  'niao',   'nie',    'nin',    'ning',   'niu',    'nong',   'nou',
        'nu',     'nuan',   'nue',    'nun',    'nung',   'nuo',    'nv',     'nve',    'o',      'oes',
        'ol',     'on',     'ou',     'pa',     'pai',    'pak',    'pan',    'pang',   'pao',    'pei',
        'pen',    'peng',   'peol',   'phas',   'phdeng', 'phoi',   'phos',   'pi',     'pian',   'piao',
        'pie',    'pin',    'ping',   'po',     'pou',    'ppun',   'pu',     'q',      'qi',     'qia',
        'qian',   'qiang',  'qianke', 'qianwa', 'qiao',   'qie',    'qin',    'qing',   'qiong',  'qiu',
        'qu',     'quan',   'que',    'qun',    'ra',     'ram',    'ran',    'rang',   'rao',    're',
        'ren',    'reng',   'ri',     'rong',   'rou',    'ru',     'rua',    'ruan',   'rui',    'run',
        'ruo',    'sa',     'saeng',  'sai',    'sal',    'san',    'sang',   'sao',    'se',     'sed',
        'sei',    'sen',    'seng',   'seo',    'seon',   'sha',    'shai',   'shan',   'shang',  'shao',
        'she',    'shei',   'shen',   'sheng',  'shi',    'shike',  'shiwa',  'shou',   'shu',    'shua',
        'shuai',  'shuan',  'shuang', 'shui',   'shun',   'shuo',   'shw',    'si',     'so',     'sol',
        'song',   'sou',    'su',     'suan',   'sui',    'sun',    'suo',    'ta',     'tae',    'tai',
        'tan',    'tang',   'tao',    'tap',    'te',     'tei',    'teng',   'teo',    'teul',   'teun',
        'ti',     'tian',   'tiao',   'tie',    'ting',   'tiu',    'tol',    'ton',    'tong',   'tou',
        'tu',     'tuan',   'tui',    'tun',    'tuo',    'uu',     'wa',     'wai',    'wan',    'wang',
        'wei',    'wen',    'weng',   'wie',    'wo',     'wu',     'xi',     'xia',    'xian',   'xiang',
        'xiao',   'xie',    'xin',    'xing',   'xiong',  'xiu',    'xu',     'xuan',   'xue',    'xun',
        'ya',     'yan',    'yang',   'yao',    'ye',     'yen',    'yi',     'yin',    'ying',   'yo',
        'yong',   'you',    'yu',     'yuan',   'yue',    'yug',    'yun',    'za',     'zad',    'zai',
        'zan',    'zang',   'zao',    'ze',     'zei',    'zen',    'zeng',   'zha',    'zhai',   'zhan',
        'zhang',  'zhao',   'zhe',    'zhei',   'zhen',   'zheng',  'zhi',    'zhong',  'zhou',   'zhu',
        'zhua',   'zhuai',  'zhuan',  'zhuang', 'zhui',   'zhun',   'zhuo',   'zi',     'zo',     'zong',
        'zou',    'zu',     'zuan',   'zui',    'zun',    'zuo'
        );
    BEGIN
        IF (p_PY_Index>0) AND (p_PY_Index<527) THEN
           --RETURN  INITCAP(v_PY_List(p_PY_Index));
           RETURN  v_PY_List(p_PY_Index);
        ELSE
          RETURN '';
        END IF;
    END GetHzPY_by_index;
    /
  • 相关阅读:
    2012年几大传统编程语言就业趋势分析
    解决vs2010 utimate中文版添加Silverlight for WP7模板方案【WP7学习札记之一】
    ASP.NET中的加密与解密
    先睹为快:Visual Studio 11测试版已于2.29在微软官方网站正式发布
    五种常见的ASP.NET安全缺陷
    WP7开发平台介绍及开发注意事项【WP7学习札记之二】
    简单工厂模式【设计模式学习01】
    单例的若干实现总结与拓展
    按照“红线准则”设计布局【WP7学习札记之三】
    几个解放双手的 Go 开发利器
  • 原文地址:https://www.cnblogs.com/siyunianhua/p/3830859.html
Copyright © 2011-2022 走看看