根据姓名获得该姓名的拼音简码,如姓名为刘红,根据该函数获得的拼音为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;
分享到:
相关推荐
"汉字转拼音简码"就是这样的一个技术点,它涉及到计算机处理中文字符时的一种方法。Delphi是一种流行的面向对象的编程语言,常用于Windows应用开发。在Delphi中实现汉字转拼音简码的功能,可以方便地帮助我们处理与...
### Oracle 汉字拼音简码获取:深入解析与应用 在现代信息技术中,文本处理尤其是多语言文本处理,已经成为数据库管理和应用开发中的关键环节。其中,将汉字转换为其拼音简码(即取每个汉字拼音的首字母)是常见的...
MySQL汉字转拼音简码UDF(用户自定义函数)是一种扩展MySQL功能的方法,它使得数据库系统能够处理特定的汉字到拼音转换任务,而无需通过效率较低的函数实现。UDF允许用户为MySQL创建新的函数,以提高性能并满足特定...
汉字是中文的主要文字系统,而拼音是用拉丁字母表示汉语发音的一种方式。简码通常是指拼音的首字母,用于快速输入或简化处理。例如,“中国”对应的拼音是“Zhongguo”,其简码可能是“ZG”。 在Java中,处理汉字到...
拼音简码是基于汉字的汉语拼音的一种简化表示方式,常见于各种中文输入法中。例如,汉字“中国”对应的拼音全拼是“Zhongguo”,而简码可能是“zg”。这种简码系统大大提高了汉字输入的效率,减少了用户的键入次数。...
拼音简码是指在中文输入法中,为了方便快速输入汉字而采用的一种编码方式。它通常将一个汉字的全拼简化为几个字母,这些字母通常是该汉字拼音的首字母或者是一些特定的字母组合。例如,“中国”两字的全拼是“zhong ...
在IT行业中,自动获取汉字的拼音简码是一项实用的技术,特别是在处理中文文本的搜索、排序或数据处理时。这项技术的实现通常涉及到自然语言处理(NLP)和字符编码转换。下面将详细介绍这个主题,以及如何使用...
在处理汉字与拼音的关系时,有时我们需要获取汉字的拼音简码,这种简码通常是汉字拼音的第一个字母,对于快速输入和文本处理具有重要意义。本篇文章将深入探讨如何在Delphi中实现这一功能。 首先,我们需要了解汉字...
在IT领域,拼音简码是一种高效的文字输入技术,特别是在中文输入法中,它极大地提高了打字速度和效率。拼音简码通常基于汉字的拼音来创建,通过缩短完整的拼音字符串,用户只需要输入少量字母就能快速匹配到想要输入...
汉字转拼音简码js,项目中直接引入即可使用。
这个过程涉及复杂的字符串操作和条件判断,确保了每个汉字都能准确地转换为其对应的拼音简码。 #### 知识点五:SQL Server 数据库安全性与性能优化 在函数的开头,通过`IF OBJECT_ID('sf_ShortCode') > 0 DROP ...
在.NET框架中,C#语言提供了丰富的功能来处理中文字符,包括中文拼音和中文简码的转换。本文将深入探讨这些知识点,以便开发者能够更好地在C#项目中处理中文字符。 首先,我们要理解中文拼音是将汉字转换为其对应的...
获得汉字的拼音简码程序(VB6.0源代码编写)获得汉字的拼音简码,在你输入汉字的同时,汉字的首字母就会显示出来。Public Function py(mystr As String) As String
在Oracle中,没有内置的函数直接支持汉字到拼音的转换,因此我们需要自定义函数。这个过程通常涉及到Unicode编码和汉字字库的使用。一个常见的方法是通过汉字的Unicode码点转换为GB2312或GBK编码,然后查找对应的...
在这个场景中,"汉字拼音简码自动完成"是指一种功能,它能够帮助用户在输入汉字时自动提供对应的拼音简码建议,提高输入效率。这种功能在中文输入环境中非常实用,特别是在大量输入汉字时,可以通过拼音简码快速找到...
总的来说,“Delphi获得汉字拼音简码”的主题涵盖了Delphi的Unicode编程、字符串处理、第三方库使用、Windows API调用等多个方面,对于提升Delphi开发者的中文处理能力具有重要意义。通过学习和实践这个主题,开发者...
在 SQL 中实现获取汉字拼音简码 在 SQL 中实现获取汉字拼音简码是指在 SQL 服务器中使用 SQL 语言实现获取汉字拼音简码的方法。该方法可以减少汉字录入量,提高操作速度,并增强软件的易用性。 1. 排序规则 在 ...
在VB(Visual Basic)编程环境中,拼音简码和拼音首字母查询是一项常见的需求,尤其是在处理汉字数据时。本文将深入探讨如何在VB中实现这一功能,以帮助开发者更高效地处理汉字与拼音之间的转换。 首先,我们需要...
汉字拼音简码通常是根据汉字的机内码来生成的,这是一种节省存储空间并提高检索效率的方法。以下我们将详细讲解如何在VB中实现这个功能。 首先,我们需要了解汉字与ASCII字符的关系。汉字属于DBCS(Double-Byte ...