正则 - 提取子串

 11g版本:

  
  
  
  
  1. WITH t AS 
  2.   SELECT '(( :1 * :1 ) + :2 )/:10' col 
  3.   FROM dual 
  4.   UNION ALL 
  5.   SELECT '(( :3 * :0 ) + :323 )/:1213lse12lj' FROM dual 
  6. SELECT col, 
  7.        regexp_substr(col, 
  8.                      '[0-9]+'
  9.                      1, 
  10.                      LEVELAS dd, 
  11.        LEVEL AS position 
  12. FROM t 
  13. CONNECT BY LEVEL <= regexp_count(col, 
  14.                                  '[0-9]+'AND 
  15.            PRIOR dbms_random.VALUE IS NOT NULL AND 
  16.            PRIOR col = col 
  17. ORDER SIBLINGS BY col; 

 10g版本:

 

  
  
  
  
  1. WITH t AS 
  2.   SELECT '(( :1 * :1 ) + :2 )/:10' col 
  3.   FROM dual 
  4.   UNION ALL 
  5.   SELECT '(( :3 * :0 ) + :323 )/:1213lse12lj' FROM dual 
  6. SELECT col, 
  7.        regexp_substr(col, 
  8.                      '[0-9]+'
  9.                      1, 
  10.                      LEVELAS dd, 
  11.        LEVEL AS position 
  12. FROM t 
  13. CONNECT BY LEVEL <= (length(regexp_replace(col, 
  14.                                            '[0-9]+'
  15.                                            '~~~')) - 
  16.            length(REPLACE(regexp_replace(col, 
  17.                                                    '[0-9]+'
  18.                                                    '~~~'), 
  19.                                     '~~~'))) / 3 AND 
  20.            PRIOR dbms_random.VALUE IS NOT NULL AND 
  21.            PRIOR col = col 
  22. ORDER SIBLINGS BY col; 

 

你可能感兴趣的:(正则,子串提取)