根据姓名获得该姓名的拼音简码,如姓名为刘红,根据该函数获得的拼音为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;
分享到:
相关推荐
用DEPHI把汉字转换为拼音简码(汉字拼音的第一个字母)。 用DEPHI把汉字转换为拼音简码,比如“打”转换为“D”,我转换为“W”。
mysql汉字转拼音简码,如果使用函数来写效率不高,现做成UDF,速度很快接近内部函数,转换2万个商品名,也在1秒内写成
获取汉字字符串拼音简码,以每个字拼音首字母为标准。
汉字转拼音简码js,项目中直接引入即可使用。
获得汉字的拼音简码程序(VB6.0源代码编写)获得汉字的拼音简码,在你输入汉字的同时,汉字的首字母就会显示出来。Public Function py(mystr As String) As String
自动获得汉字的拼音简码
输入汉字自动产生拼音简码 输入汉字自动产生拼音简码函数
Delphi 通过查询资源文件 wbtext.rec 得到编码,得到汉字的五笔、拼音编码 (支持 7500个简体、繁体汉字) 1、批量将汉字转换为拼音码、拼音简码、五笔码、五笔简码。 2、通过ODBC建立“.mdb”数据库,名字为...
主要用于将汉字转换为拼音简码或五笔简码。使用简单、操作方便
生成拼音简码 生成拼音简码 生成拼音简码
asp.net(vb) 汉字拼音简码 自动完成 asp.net(vb) 汉字拼音简码 自动完成 asp.net(vb) 汉字拼音简码 自动完成
根据输入汉字可以取得汉字拼音的简码(即汉字拼音的第一个字母),常用于快速输入。
.NET 中文拼音,中文简码转换示例,此示例的汉字拼音对照表我认为是最全的,测过很多医学上的生僻字都能正常转换。。。。。。。。。。。。。。
vb拼音简码及查询,输入汉字提取拼音简码,并进行查询
支持所有拼音简码生成,超级快速。 类可独立使用。
SQL Server 拼音简码获取函数。
oracle创建函数生成拼音码(汉字首字母)
在sql中实现获取汉字拼音简码.pdf
VB编程中,汉字的拼音简码获取的编程源码