Anne Han

看见更大的世界,遇见更好的自己。

Oracle 截取指定长度的字符

去掉回车,换行符号,截取指定长度的字符

具体代码示例:

 1 --Function
 2 --去掉前后空格,截取字符,字符长度为P_Length
 3 create or replace function get_StringLen
 4 (
 5   P_Name IN VARCHAR2,
 6   P_Length IN int
 7 ) return varchar2 is
 8   v_Temp varchar2(1000):='';
 9   v_Name varchar2(1000):='';
10   v_Len int:=0;
11   i int:=1;
12   k int:=0;
13 begin
14   --去掉回车,换行符号
15   select trim(translate(P_Name,chr(13)||chr(10),',')) into v_Name from dual; 
16   
17   --取字串的长度
18   select length(v_Name) into v_Len from dual; 
19   
20   --循环来取
21   for i in reverse 1..v_Len 
22   loop
23     if (lengthb(substr(v_Name,-i,1))<>length(substr(v_Name,-i,1))) then
24       k:=k+2;
25     else
26       k:=k+1;
27     end if;
28     if k<=P_Length then
29       v_Temp:=v_Temp || substr(v_Name,-i,1);
30     end if;
31     if k>=P_Length then
32       CONTINUE;
33     end if;
34   end loop;
35     
36   return(v_Temp);
37   
38 end get_StringLen;
39 
40 --Test
41 select get_StringLen('asdf',5) from dual;--返回结果:'asdf'
42 select get_StringLen('asd中国',5) from dual;--返回结果:'asd中'
43 select get_StringLen('asdfasdf',5) from dual;--返回结果:'asdfa'

 

posted @ 2015-08-22 10:10  AnneHan  阅读(2793)  评论(0编辑  收藏  举报