zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    数据库基本操作
    常用开发工具的一些问题
    jquery 之ajax获取数据
    处理动态添加的元素事件无效
    javascript面向对象
    项目中使用rem的方法
    vue实时获取路由地址
    echarts修改线条颜色的方法
    顶部导航栏点击数据不缓存
    sass-loader版本报错问题(Error: Callback was already called)
  • 原文地址:https://www.cnblogs.com/Jackie-sky/p/10364208.html
Copyright © 2011-2022 走看看