Oracle 中文转字母 函数

 1 CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS
 2 V_COMPARE VARCHAR2(100);
 3 V_RETURN VARCHAR2(4000);
 4 FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS
 5 BEGIN
 6 RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M');
 7 END;
 8 BEGIN
 9 
10 FOR I IN 1..LENGTH(''''||P_NAME||'''') LOOP
11 V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, I, 1));
12 IF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
13 V_RETURN := V_RETURN || 'a';
14 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('簿 ') THEN
15 V_RETURN := V_RETURN || 'b';
16 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
17 V_RETURN := V_RETURN || 'c';
18 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
19 V_RETURN := V_RETURN || 'd';
20 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
21 V_RETURN := V_RETURN || 'e';
22 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
23 V_RETURN := V_RETURN || 'f';
24 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
25 V_RETURN := V_RETURN || 'g';
26 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
27 V_RETURN := V_RETURN || 'h';
28 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
29 V_RETURN := V_RETURN || 'j';
30 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
31 V_RETURN := V_RETURN || 'k';
32 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
33 V_RETURN := V_RETURN || 'l';
34 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
35 V_RETURN := V_RETURN || 'm';
36 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
37 V_RETURN := V_RETURN || 'n';
38 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
39 V_RETURN := V_RETURN || 'o';
40 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
41 V_RETURN := V_RETURN || 'p';
42 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
43 V_RETURN := V_RETURN || 'q';
44 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
45 V_RETURN := V_RETURN || 'r';
46 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
47 V_RETURN := V_RETURN || 's';
48 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
49 V_RETURN := V_RETURN || 't';
50 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
51 V_RETURN := V_RETURN || 'w';
52 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
53 V_RETURN := V_RETURN || 'x';
54 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
55 V_RETURN := V_RETURN || 'y';
56 ELSIF V_COMPARE >= F_NLSSORT('') AND V_COMPARE <= F_NLSSORT('') THEN
57 V_RETURN := V_RETURN || 'z';
58 END IF;
59 END LOOP;
60 RETURN V_RETURN;
61 END;

 

posted @ 2016-11-25 10:34  指间的徘徊  阅读(999)  评论(0编辑  收藏  举报