1. 程式人生 > >Oracle提取中文字符串拼音首字母函數

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

oracl code 通過 sort target cti arch clas pinyin

通過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;

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