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'

 

 

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

感谢您的阅读,请关注我的后续博客

上一篇:Oracle 给字符串补空格、补0


下一篇:在Oracle/SQL Service中通过Function返回Table