oracle本身自带许多了函数,但是在实际的工作中,这些函数是远远不够用,因此自定义一些函数往往使代码的执行效率更高!
需求:取出字符串'0001 1 dfds 13528221 dgdfkgdf'中第3个标识符(这个里面标识符是一个空格' ')和第4个标识符之间的字符串
create or replace function strfind(cs in varchar2, --字符串 bs in varchar2,--标示符 x in number, --想要取到字符串部分的第1个标示符是第几个标识符 y in number) --想要取到字符串部分的第2个标示符是第几个标识符,与前者相连return varchar2 isz varchar2(20);m number;n number;p number;begin --返回第1个标志符所在的位置 select instr(cs,bs,1,x) into m from dual; --返回第2个标志符所在的位置 select instr(cs,bs,1,y) into n from dual; --取得字符串z的长度 p:=n-m-1; select substr(cs,m+1,p) into z from dual; return(z);end strfind;
------测试及返回结果
需求:取出字符串'0001 1 dfds 13528221 dgdfkgdf'中第3个标识符(这个里面标识符是一个空格' ')和第4个标识符之间的字符串
---------------------------------
select strfind('0001 1 dfds 13528221 dgdfkgdf',' ',3,4) from dual
查询结果:
---------------------------------
13528221
说明:定义的参数bs最好是单个字符,可以根据实际情况对程序改动
select substr('XX内容1:AA',instr('XX内容1:AA','AA'),2) from dual
根据它举一反三即可