• Oracle提取中文字符串拼音首字母函数


    通过oracle的NLSSORT函数对汉字按照拼音排序,然后根据汉字的区间返回对应的首字母。

    效果1,获取拼音简码:

    效果2,获取姓名首字母:

    创建函数:

    /* 获取拼音简码函数 */
    CREATE OR REPLACE FUNCTION GET_PYJM (P_NAME IN VARCHAR2)
        RETURN VARCHAR2
    AS
        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;
  • 相关阅读:
    高并发系统如何设计
    PHP的垃圾回收机制(开启垃圾回收机制后的优缺点是什么)
    移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签)
    家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)
    一天JavaScript示例-判定web页面的区域
    左右margin top问题百分比值
    Ubuntu14.04设备JDK
    三层架构,四大天王——删
    MEMO:UIButton 中的图片和标题 左对齐
    HDU 3874 离线段树
  • 原文地址:https://www.cnblogs.com/Jackie-sky/p/10364208.html
Copyright © 2020-2023  润新知