如何使用oracle中的正则表达式来获取一段字符串中的指定格式的值?

原始值:'ZB0010+-=-3KFJK(ZB0012S)DLKG-=-ZB0042......ZB0323...'
目标值1:'ZB0010,ZB0012,ZB0042,ZB0323'
目标值2:id, value
---------
1, ZB0010
2, ZB0012
3, ZB0042
4, ZB0323

请问如何用oracle实现?

--oracle è²Œä¼¼ä¸æ”¯æŒæ­£å‘否定预查,还是用刚刚思路:
--目标值2:
WITH TMP AS
 (SELECT 'ZB0010+-=-3KFJK(ZB0012S)DLKG-=-ZB0042......ZB0323...' AS STR
  FROM   DUAL)
SELECT LEVEL AS ID, REGEXP_SUBSTR(STR, 'ZB[0-9]{4}', 1, LEVEL) AS VALUE
FROM   TMP
CONNECT BY LEVEL <= REGEXP_COUNT(STR, 'ZB[0-9]{4}');
--目标值1:
WITH TMP AS
 (SELECT 'ZB0010+-=-3KFJK(ZB0012S)DLKG-=-ZB0042......ZB0323...' AS STR
  FROM   DUAL)
SELECT LISTAGG(VALUE, ',') WITHIN GROUP(ORDER BY ID)
FROM   (SELECT LEVEL AS ID,
                REGEXP_SUBSTR(STR, 'ZB[0-9]{4}', 1, LEVEL) AS VALUE
         FROM   TMP
         CONNECT BY LEVEL <= REGEXP_COUNT(STR, 'ZB[0-9]{4}'))来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答