惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
J
Java Code Geeks
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
IT之家
IT之家
博客园_首页
B
Blog RSS Feed
Google DeepMind News
Google DeepMind News
B
Blog
U
Unit 42
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
博客园 - 聂微东
腾讯CDC
A
About on SuperTechFans

博客园 - zyi

Windows FTP安装 组合模式 Oracle优化 创建job 建索引 加解密 代码规范工具 耦合内聚封装 Dev进度条 SQL_SERVER 导oracle(转) SQL_SERVER 连接oracle(转) win7电脑上wifi Oracle对象统计信息 关于odp.net的FetchSize属性 技巧类 linq in 语法 温习设计模式 静态与非静态(转改) 关于引擎的设计
Oracle的汉字转拼音首字母的函数
zyi · 2013-06-27 · via 博客园 - zyi

CREATE OR REPLACE FUNCTION F_PINYIN(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS

     V_COMPARE VARCHAR2(100);

     V_RETURN VARCHAR2(4000);

     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..NVL(LENGTH(P_NAME), 0) 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;