oracle怎么截取两个字符串之间的内容

如:✀XX内容1:AA 内容2:BB 内容3:CC✀要截取内容1和内容2之间的 AA
2025-03-23 02:22:52
推荐回答(2个)
回答1:

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最好是单个字符,可以根据实际情况对程序改动

回答2:

select substr('XX内容1:AA',instr('XX内容1:AA','AA'),2) from dual
根据它举一反三即可