oracle 汉字转拼音函数 google
转自:http://www.cnblogs.com/zfc2201/archive/2012/04/16/2452751.html
http://aspxuexi.blog.hexun.com/77579695_d.html
http://zhouyundong0482.blog.163.com/blog/static/103517920085210210604/
根据姓名获得该姓名的拼音简码,如姓名为刘红,根据该函数获得的拼音为lh,该函数主要用户在查询时,可根据姓名的拼写简码进行查询
数据库字符集为GBK:
- create or replace
- function PY (P1 VARCHAR2,P2 INT default 0) return VARCHAR2 as
- CHAR1 VARCHAR2(2);
- CHAR2 VARCHAR2(2);
- LEN INTEGER;
- N1 INTEGER;
- N2 INTEGER;
- CSOUND VARCHAR2(32767);
- BEGIN
- IF P2 = 1 THEN
- LEN := 1;
- ELSE
- LEN := LENGTH(P1);
- END IF;
- FOR I IN 1..LEN LOOP
- CHAR2 := SUBSTR(P1, i, 1);
- N1 := FLOOR(ASCII(CHAR2) / 256);
- N2 := MOD(ASCII(CHAR2), 256);
- IF N1 = 0 AND N2 <= 129 THEN
- CHAR1 := CHAR2;
- ELSIF N2 <> 127 AND N2 <> 255 AND NOT (N2 >= 0 AND N2 <= 63) THEN
- SELECT
- CASE
- WHEN CHAR2 >= '丂' AND CHAR2 < '芭' THEN 'A'
- WHEN CHAR2 >= '芭' AND CHAR2 < '擦' THEN 'B'
- WHEN CHAR2 >= '擦' AND CHAR2 < '搭' THEN 'C'
- WHEN CHAR2 >= '搭' AND CHAR2 < '蛾' THEN 'D'
- WHEN CHAR2 >= '蛾' AND CHAR2 < '发' THEN 'E'
- WHEN CHAR2 >= '发' AND CHAR2 < '噶' THEN 'F'
- WHEN CHAR2 >= '噶' AND CHAR2 < '哈' THEN 'G'
- WHEN CHAR2 >= '哈' AND CHAR2 < '击' THEN 'H'
- WHEN CHAR2 >= '击' AND CHAR2 < '喀' THEN 'J'
- WHEN CHAR2 >= '喀' AND CHAR2 < '垃' THEN 'K'
- WHEN CHAR2 >= '垃' AND CHAR2 < '妈' THEN 'L'
- WHEN CHAR2 >= '妈' AND CHAR2 < '拿' THEN 'M'
- WHEN CHAR2 >= '拿' AND CHAR2 < '哦' THEN 'N'
- WHEN CHAR2 >= '哦' AND CHAR2 < '啪' THEN 'O'
- WHEN CHAR2 >= '啪' AND CHAR2 < '期' THEN 'P'
- WHEN CHAR2 >= '期' AND CHAR2 < '然' THEN 'Q'
- WHEN CHAR2 >= '然' AND CHAR2 < '撒' THEN 'R'
- WHEN CHAR2 >= '撒' AND CHAR2 < '塌' THEN 'S'
- WHEN CHAR2 >= '塌' AND CHAR2 < '挖' THEN 'T'
- WHEN CHAR2 >= '挖' AND CHAR2 < '稀' THEN 'W'
- WHEN CHAR2 >= '稀' AND CHAR2 < '压' THEN 'X'
- WHEN CHAR2 >= '压' AND CHAR2 < '匝' THEN 'Y'
- WHEN CHAR2 >= '匝' AND CHAR2 <= '鼱' THEN 'Z'
- END
- INTO CHAR1
- FROM DUAL;
- ELSE
- CHAR1 := 'ER';
- END IF;
- CSOUND := CSOUND || CHAR1;
- END LOOP;
- RETURN CSOUND;
- END;
如果数据库字符集为UTF-8,则函数如下:
- create or replace
- FUNCTION GETCH2SPELL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS
- V_COMPARE VARCHAR2(100);
- V_RETURN VARCHAR2(4000);
- CHAR1 VARCHAR2(3);
- CHAR2 VARCHAR2(3);
- LEN INTEGER;
- N1 INTEGER;
- N2 INTEGER;
- FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS
- BEGIN
- RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M');
- END;
- BEGIN
- LEN := LENGTH(P_NAME);
- FOR I IN 1..LEN LOOP
- CHAR2 := SUBSTR(P_NAME, i, 1);
- N1 := FLOOR(ASCII(CHAR2) / 256);
- N2 := MOD(ASCII(CHAR2), 256);
- IF N1 = 0 AND N2 <= 129 THEN
- V_RETURN := V_RETURN || CHAR2;
- ELSIF N2 <> 127 AND N2 <> 255 AND NOT (N2 >= 0 AND N2 <= 63) THEN
- V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, I, 1));
- IF V_COMPARE >= F_NLSSORT(' 吖 ') AND V_COMPARE <= F_NLSSORT('驁 ') THEN
- V_RETURN := V_RETURN || 'A';
- ELSIF V_COMPARE >= F_NLSSORT('八 ') AND V_COMPARE <= F_NLSSORT('簿 ') THEN
- V_RETURN := V_RETURN || 'B';
- ELSIF V_COMPARE >= F_NLSSORT('嚓 ') AND V_COMPARE <= F_NLSSORT('錯 ') THEN
- V_RETURN := V_RETURN || 'C';
- ELSIF V_COMPARE >= F_NLSSORT('咑 ') AND V_COMPARE <= F_NLSSORT('鵽 ') THEN
- V_RETURN := V_RETURN || 'D';
- ELSIF V_COMPARE >= F_NLSSORT('妸 ') AND V_COMPARE <= F_NLSSORT('樲 ') THEN
- V_RETURN := V_RETURN || 'E';
- ELSIF V_COMPARE >= F_NLSSORT('发 ') AND V_COMPARE <= F_NLSSORT('猤 ') THEN
- V_RETURN := V_RETURN || 'F';
- ELSIF V_COMPARE >= F_NLSSORT('旮 ') AND V_COMPARE <= F_NLSSORT('腂 ') THEN
- V_RETURN := V_RETURN || 'G';
- ELSIF V_COMPARE >= F_NLSSORT('妎 ') AND V_COMPARE <= F_NLSSORT('夻 ') THEN
- V_RETURN := V_RETURN || 'H';
- ELSIF V_COMPARE >= F_NLSSORT('丌 ') AND V_COMPARE <= F_NLSSORT('攈 ') THEN
- V_RETURN := V_RETURN || 'J';
- ELSIF V_COMPARE >= F_NLSSORT('咔 ') AND V_COMPARE <= F_NLSSORT('穒 ') THEN
- V_RETURN := V_RETURN || 'K';
- ELSIF V_COMPARE >= F_NLSSORT('垃 ') AND V_COMPARE <= F_NLSSORT('擽 ') THEN
- V_RETURN := V_RETURN || 'L';
- ELSIF V_COMPARE >= F_NLSSORT('嘸 ') AND V_COMPARE <= F_NLSSORT('椧 ') THEN
- V_RETURN := V_RETURN || 'M';
- ELSIF V_COMPARE >= F_NLSSORT('拏 ') AND V_COMPARE <= F_NLSSORT('瘧 ') THEN
- V_RETURN := V_RETURN || 'N';
- ELSIF V_COMPARE >= F_NLSSORT('筽 ') AND V_COMPARE <= F_NLSSORT('漚 ') THEN
- V_RETURN := V_RETURN || 'O';
- ELSIF V_COMPARE >= F_NLSSORT('妑 ') AND V_COMPARE <= F_NLSSORT('曝 ') THEN
- V_RETURN := V_RETURN || 'P';
- ELSIF V_COMPARE >= F_NLSSORT('七 ') AND V_COMPARE <= F_NLSSORT('裠 ') THEN
- V_RETURN := V_RETURN || 'Q';
- ELSIF V_COMPARE >= F_NLSSORT('亽 ') AND V_COMPARE <= F_NLSSORT('鶸 ') THEN
- V_RETURN := V_RETURN || 'R';
- ELSIF V_COMPARE >= F_NLSSORT('仨 ') AND V_COMPARE <= F_NLSSORT('蜶 ') THEN
- V_RETURN := V_RETURN || 'S';
- ELSIF V_COMPARE >= F_NLSSORT('侤 ') AND V_COMPARE <= F_NLSSORT('籜 ') THEN
- V_RETURN := V_RETURN || 'T';
- ELSIF V_COMPARE >= F_NLSSORT('屲 ') AND V_COMPARE <= F_NLSSORT('鶩 ') THEN
- V_RETURN := V_RETURN || 'W';
- ELSIF V_COMPARE >= F_NLSSORT('夕 ') AND V_COMPARE <= F_NLSSORT('鑂 ') THEN
- V_RETURN := V_RETURN || 'X';
- ELSIF V_COMPARE >= F_NLSSORT('丫 ') AND V_COMPARE <= F_NLSSORT('韻 ') THEN
- V_RETURN := V_RETURN || 'Y';
- ELSIF V_COMPARE >= F_NLSSORT('帀 ') AND V_COMPARE <= F_NLSSORT('咗 ') THEN
- V_RETURN := V_RETURN || 'Z';
- END IF;
- END IF;
- END LOOP;
- RETURN V_RETURN;
- END;
相关推荐
oracle汉字转拼音函数,支持拼音大小写,首字母
汉字转品应,带空格间隔和不带空格间隔,经过自己的实践整理修改过代码,基本可以覆盖99%的汉字和生僻字
汉字转拼音的Oracle函数 前言:最近处理一个特殊的问题,需要用到汉字自动转换拼音的功能。 解决:网上找了不少资料,都是有所缺陷,而且也好像很绕。其实是一个很简单的东东。后来还是自己写了一个函数获取。 这是...
oracle中进行汉字转拼音的函数代码。也是从别处找到的,觉得挺有用的,也许对你也有帮助!
oracle汉字转拼音package 1.获得全拼 2.拼音首字母 3.拼音截取等 需要用的时候,调用这个包里的函数,就可以获得全部拼音 SQL codeselect GetHZPY.GetHzFullPY('汉字') from dual result:HanZi 调用这个 SQL ...
请各网友本着共享精神,逐渐将此文档补全,供大家共同使用,此文档与本人上传的另一份oracle汉字转拼音的文档可以对比参看,先前一份函数全但存在好多问题,这份文档只有转全拼小写的部分,评论一句就可下载了。
oracle获取汉字拼音拼音首字母的功能函数 oracle 获取汉字拼音
oracle汉字转拼音的各种方法
oracle创建函数生成拼音码(汉字首字母)
批量修改汉字转拼音首字母
用于oracle中字段汉字转拼音的函数,可以直接从汉字读取首字母或全拼
汉字转拼音的函数,通过不加参数或者加参数1、2、3、4可实现全拼小写、全拼大写、全拼首字母大写、首拼小写、首拼大写
--此函数默认返回汉字拼音的首字母,第二个参数不为空则返回全拼。 create or replace function f_getFirstOrFullSpell(p_cnStr In varchar2,p_sign In number default null) return varchar2 as lv_spell varchar2...
Oracle中进行汉字转换成拼音,通过参数不同可以返回拼音首字母或全拼: --调用方式: SELECT f_getSpell('江西') from dual; --返回 'jx' --SELECT f_getSpell('江西',0) from dual; --返回 'jiangxi'
Oracle获取汉字拼音和拼音首字母的功能函数
Oracle汉字拼音首字母函数
pub_characterencoding表数据,结合相关函数可以实现oracle汉字转拼音、五笔等相关操作
这是经常用的一套oracle拼音码 五笔码,不知道其他人是否用的比较合适
完整简洁的Oracle获得汉字字符串拼音首字母和全拼的函数 方案一(是方案二的包体方式)pinyin(拼音...方案二(较慢)常用中文字符转全拼音函数(有空格) 方案三(最优)完整简洁的Oracle获得汉字字符串拼音首字母和全拼的函数
oracle生成拼音、五笔首字母的functions方法,亲测有效!!!