从别的数据库里拿到的获取拼音简码的函数,觉得挺有意思的,具体的思路就是,通过oracle的NLSSORT函数对汉字按照拼音排序,然后根据汉字的区间返回对应的首字母。具体实现效果和代码如下。
希望能帮助到你
select GET_PYJM('赵鹏') from dual;
1 ZP
CREATE OR REPLACE FUNCTION GET_PYJM (P_NAME IN VARCHAR2)
RETURN VARCHAR2AS
V_COMPARE VARCHAR2 (100);V_RETURN VARCHAR2 (4000);BEGIN
DECLARE FUNCTION F_NLSSORT (P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSSORT (P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M'); END;BEGIN FOR I IN 1 .. LENGTH (P_NAME) LOOP 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 LOOP; RETURN V_RETURN;END;END;
继续阅读与本文标签相同的文章
上一篇 :
Python网络编程(进程池、进程间的通信)
下一篇 :
JDK源码分析之hashmap就这么简单理解
-
DNN Install包,DNN Source包和DNN StarterKit包之间有什么区别?
2026-05-25栏目: 教程
-
让DotNetNuke 4.3.5使用SQL Full-text index 查找用户信息
2026-05-25栏目: 教程
-
在一个IIS上同时运行两个版本ASP.NET报错的
2026-05-25栏目: 教程
-
VB.NET 中的ref 和C#中的ref 格式区别
2026-05-25栏目: 教程
-
DotNetNuke 4.3.5 上传中文语言包时"A File Operation Failed. Please Check Resource File Permissions So Files Can Be Edited"报错
2026-05-25栏目: 教程
