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;
  • 相关阅读:
    精灵点点基础教程1 -- 下载与安装
    技术人员搞公司还是省省吧
    企业级自定义表单引擎解决方案(二)--架构及核心模块设计
    企业级自定义表单引擎解决方案(一)--总体介绍
    .net core quartz job作业调度管理组件
    NPOI读写Excel组件封装Excel导入导出组件
    企业级工作流解决方案(十七)--工作流--工作流插件模型
    企业级工作流解决方案(十六)--工作流--工作流实体模型
    企业级工作流解决方案(十五)--集成Abp和ng-alain--Abp其他改造
    企业级工作流解决方案(十四)--集成Abp和ng-alain--自动化脚本
  • 原文地址:https://www.cnblogs.com/Jackie-sky/p/10364208.html
Copyright © 2011-2022 走看看