這裏是一個例子。第三列是等效的正則表達式,在我看來是更短的/更清晰:
SQL> with t as
2 (select 'abc:de:fghijk:lmnopqrs:tuvw:xyz' data from dual union all
3 select 'abcde:fg:hi:jklmnopqr:s:tu:v:wxyz' from dual union all
4 select ':abcde:fg:hi:jklmnopqr:s:tu:v:wxyz' from dual
5 )
6 select data
7 , substr
8 (regexp_substr(data,':[^:]+:[^:]+:[^:]+*', 1, 1)
9 , length(regexp_substr(data,':[^:]+:[^:]+:*', 1, 1)) + 6
10 )
11 , substr(regexp_substr(data,':[^:]+',1,3),7)
12 from t
13/
DATA SUBSTR(REGEXP_SUBSTR(DATA,':[^:]+: SUBSTR(REGEXP_SUBSTR(DATA,':
---------------------------------- ---------------------------------- ----------------------------
abc:de:fghijk:lmnopqrs:tuvw:xyz qrs qrs
abcde:fg:hi:jklmnopqr:s:tu:v:wxyz opqr opqr
:abcde:fg:hi:jklmnopqr:s:tu:v:wxyz
3 rows selected.
問候,
羅布。
所有我看到的是太空侵略者! – Liath
@Lath這是pacman傻瓜 – Prix
'+ *'不應該是一個合法的字符,雖然'* +'在某些語言中是合法的。我很確定這是一個錯字。 – Jerry