请教一个oracle开发的问题?

比如:v_str := 'abc123dsdfo456dfaj78dsl'
通过某个函数 function(v_str) 能得到 '123,456,78'
是否 regexp_ 相关函数能做到?
上面的场景相对简单,改成如下场景:
v_str := 'aBcX234EfX789uyTr'
是否能通过oracle自带函数从字符串中抽取出“X数字”的所有匹配,并用逗号连接起来,即
function(v_str) = 'X234,X789'
存不存在这样的function,是否 regexp_ 相关函数能做到?

慕码人8056858
浏览 558回答 2
2回答

喵喵时光机

FUNCTION REGEXP_SUBSTR_ALL(V_SRC VARCHAR, V_PATTERN VARCHAR2) RETURN VARCHAR2 ISN_COUNT NUMBER;I NUMBER;V_RESULT VARCHAR2(4000);BEGINN_COUNT := REGEXP_COUNT(V_SRC, V_PATTERN);FOR I IN 1.. N_COUNT LOOPV_RESULT := V_RESULT || REGEXP_SUBSTR(V_SRC, V_PATTERN, 1, I);END LOOP;RETURN V_RESULT;END;select REGEXP_SUBSTR_ALL('aBcX234EfX789uyTr', '\d+') from dual;返回: 234789函数定义如下: 在oracle 11g中可用FUNCTION REGEXP_SUBSTR_ALL(V_SRC VARCHAR, V_PATTERN VARCHAR2) RETURN VARCHAR2 ISN_COUNT NUMBER;I NUMBER;V_RESULT VARCHAR2(4000);BEGINN_COUNT := REGEXP_COUNT(V_SRC, V_PATTERN);FOR I IN 1.. N_COUNT LOOPV_RESULT := V_RESULT || REGEXP_SUBSTR(V_SRC, V_PATTERN, 1, I);END LOOP;RETURN V_RESULT;END;

慕森王

select REGEXP_REPLACE('abc123dsdfo456dfaj78dsl','[^0-9]','') from dual如果达到'X234,X789'的效果,请查阅相关正则资料
打开App,查看更多内容
随时随地看视频慕课网APP