请教一个oracle开发的问题,比如有一个字符串,是否有函数可以将其中的数字取出来,并且拼成一个新字符串
发布网友
发布时间:2022-04-09 01:26
我来回答
共3个回答
热心网友
时间:2022-04-09 02:55
FUNCTION REGEXP_SUBSTR_ALL(V_SRC VARCHAR, V_PATTERN VARCHAR2) RETURN VARCHAR2 IS
N_COUNT NUMBER;
I NUMBER;
V_RESULT VARCHAR2(4000);
BEGIN
N_COUNT := REGEXP_COUNT(V_SRC, V_PATTERN);
FOR I IN 1.. N_COUNT LOOP
V_RESULT := V_RESULT || REGEXP_SUBSTR(V_SRC, V_PATTERN, 1, I);
END LOOP;
RETURN V_RESULT;
END;
select REGEXP_SUBSTR_ALL('aBcX234EfX789uyTr', '\d+') from al;
返回: 234789
函数定义如下: 在oracle 11g中可用
FUNCTION REGEXP_SUBSTR_ALL(V_SRC VARCHAR, V_PATTERN VARCHAR2) RETURN VARCHAR2 IS
N_COUNT NUMBER;
I NUMBER;
V_RESULT VARCHAR2(4000);
BEGIN
N_COUNT := REGEXP_COUNT(V_SRC, V_PATTERN);
FOR I IN 1.. N_COUNT LOOP
V_RESULT := V_RESULT || REGEXP_SUBSTR(V_SRC, V_PATTERN, 1, I);
END LOOP;
RETURN V_RESULT;
END;
热心网友
时间:2022-04-09 04:13
select REGEXP_REPLACE('abc123dsdfo456dfaj78dsl','[^0-9]','') from al
如果达到
'X234,X789'
的效果,请查阅相关正则资料
热心网友
时间:2022-04-09 05:48
自己写个吧
把字符串中的字符一个个取出与字符 '0' '9' 比较
如果>'0'且<'9'就保留 否则丢弃