11g版本:
- WITH t AS
- (
- SELECT '(( :1 * :1 ) + :2 )/:10' col
- FROM dual
- UNION ALL
- SELECT '(( :3 * :0 ) + :323 )/:1213lse12lj' FROM dual
- )
- SELECT col,
- regexp_substr(col,
- '[0-9]+',
- 1,
- LEVEL) AS dd,
- LEVEL AS position
- FROM t
- CONNECT BY LEVEL <= regexp_count(col,
- '[0-9]+') AND
- PRIOR dbms_random.VALUE IS NOT NULL AND
- PRIOR col = col
- ORDER SIBLINGS BY col;
10g版本:
- WITH t AS
- (
- SELECT '(( :1 * :1 ) + :2 )/:10' col
- FROM dual
- UNION ALL
- SELECT '(( :3 * :0 ) + :323 )/:1213lse12lj' FROM dual
- )
- SELECT col,
- regexp_substr(col,
- '[0-9]+',
- 1,
- LEVEL) AS dd,
- LEVEL AS position
- FROM t
- CONNECT BY LEVEL <= (length(regexp_replace(col,
- '[0-9]+',
- '~~~')) -
- length(REPLACE(regexp_replace(col,
- '[0-9]+',
- '~~~'),
- '~~~'))) / 3 AND
- PRIOR dbms_random.VALUE IS NOT NULL AND
- PRIOR col = col
- ORDER SIBLINGS BY col;
转载于:https://blog.51cto.com/ora007/1169057