当前位置: 代码迷 >> Oracle开发 >> oracle开发中字符串正则表达式的有关问题
  详细解决方案

oracle开发中字符串正则表达式的有关问题

热度:97   发布时间:2016-04-24 07:22:54.0
oracle开发中字符串正则表达式的问题
请教一个问题:

比如有一个字符串,v_str := 'aBcX234EfX789uyTr'
是否能通过oracle自带的一个函数或者函数组合,从字符串中抽取出“X数字”的所有匹配,并用逗号连接起来,即
function(v_str) = 'X234,X789'
是否 regexp_ 相关函数能做到?

------解决方案--------------------
楼上的做法有点小瑕疵,
aBcX234EfX789uyTXr56 这样的字符串会输出X234,X789,X,56

好吧,写个循环
declare
l_str varchar2(128) := 'aBcX234EfX789uyTXr56';
l_substr varchar2(128);
l_result varchar2(128);
l_occurrence int := 1;
begin
loop
select regexp_substr(l_str, 'X[0-9]+', 1, l_occurrence) into l_substr from dual;
exit when l_substr is null;
if (l_occurrence <> 1) then
l_result := l_result || ',';
end if;
l_result := l_result || l_substr;
l_occurrence := l_occurrence + 1;
end loop;
dbms_output.put_line(l_result);
end;
------解决方案--------------------
SQL code
--发现问题是好事情,哥们,再去试,呵呵SQL> declare  2      v_str varchar(100) := 'aBcX234EfX789uyTrXr56';  3  begin  4      dbms_output.put_line(  5          regexp_replace(  6          regexp_replace(regexp_replace(replace(v_str,'X','aX'),  7              '[A-WYZa-z]{1}[0-9]+|[^X0-9]|^[0-9]+',','),',{2,}',',')  8          ,'^,|,$|,?X+[^0-9]','')  9      ); 10  end; 11  /X234,X789                                                                       已順利完成 PL/SQL 程序.
  相关解决方案