oracle 提取中文字串拼音首字母函數,拼音簡碼提取函數__靜態函數

來源:互聯網
上載者:User

從別的資料庫裡拿到的擷取拼音簡碼的函數,覺得挺有意思的,具體的思路就是,通過oracle的NLSSORT函數對漢字按照拼音排序,然後根據漢字的區間返回對應的首字母。具體實現效果和代碼如下。

希望能協助到你




/* 擷取拼音簡碼函數 */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; 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.