Oracle 截取指定长度的字符

简介: 去掉回车,换行符号,截取指定长度的字符 具体代码示例: 1 --Function 2 --去掉前后空格,截取字符,字符长度为P_Length 3 create or replace function get_StringLen 4 ( 5 P_Name IN VARCH...

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

具体代码示例:

 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'

 

 

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

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

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

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

目录
相关文章
|
6月前
|
SQL Oracle 关系型数据库
Oracle查询优化-将字符和数字分离
【2月更文挑战第4天】【2月更文挑战第9篇】将字符和数字分离
65 2
|
6月前
|
SQL Oracle 关系型数据库
Oracle查询优化-计算字符在字符串中出现的次数
【2月更文挑战第3天】【2月更文挑战第7篇】只接上SQL
138 0
|
6月前
|
SQL Oracle 关系型数据库
java往oracle存clob类型的值时,字符长度过长怎么办?
java往oracle存clob类型的值时,字符长度过长怎么办?
387 1
|
6月前
|
Oracle 关系型数据库
Oracle查询优化-union all 与空字符
【1月更文挑战第4天】【1月更文挑战第10篇】两个表中有重复数据时,空值与空字符串在UNION ALL中的使用中的注意点。
136 0
|
Oracle 关系型数据库
Oracle安装错误——[ INS-32010 ] 主目录位置包含无效字符
Oracle安装错误——[ INS-32010 ] 主目录位置包含无效字符
300 0
|
6月前
|
Oracle 关系型数据库
Oracle查询优化-在字符串删除特定字符
【2月更文挑战第4天】【2月更文挑战第8篇】比较灵活,列举三个常见的方式
363 0
|
Oracle 关系型数据库 数据库
Oracle 数据库表中截取 两个 | 之间的内容,substr() instr()
Oracle 数据库表中截取 两个 | 之间的内容,substr() instr()
|
存储 Oracle 关系型数据库
Oracle Ascii& Asciistr()函数使用介绍以及常用字符ASCII码对应表
Asciistr ASCII chr(9) tab空格 chr(10) 换行 chr(13) 回车 Chr(13)&amp;amp;chr(10) 回车换行 chr(32) 空格符 chr(34) 双引号 chr(39) 单引号 chr(33) ! chr(34) &quot; chr(35) # chr(36) $ ...
Oracle Ascii& Asciistr()函数使用介绍以及常用字符ASCII码对应表