regex - Retrieving Certain Strings within a String using Oracle SQL -



regex - Retrieving Certain Strings within a String using Oracle SQL -

hoping can assist next string search using oracle sql 11g r2:

data is:

| cn=axyzapple-au,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=31107427,ou=distribution lists,ou=shared mailboxes,dc=core,dc=dir,dc=abc,dc=com | cn=ea90045052,ou=groups,ou=eprofile,dc=core,dc=dir,dc=abc,dc=com | cn=s0901448,ou=distribution lists,ou=shared mailboxes,dc=core,dc=dir,dc=abc,dc=com | cn=00900887,ou=distribution lists,ou=shared mailboxes,dc=core,dc=dir,dc=abc,dc=com | cn=nsmmmm,ou=lrp,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=axyzapple-readonly,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=wwsww-au,ou=lrp,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=alogical_rw,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=axyzapple-write,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com |

from above data, need obtain strings hold string "axyzapple" "ou=managed" sec part of string match.

so based on above, next results after , displayed only:

axyzapple-au axyzapple-readonly axyzapple-write

am using oracle regexp_like/regexp_replace.

you utilize regexp_substr split input info lines , relevant strings, example:

sql> select regexp_substr(line, 'axyzapple[^,]*') subtxt 2 (select regexp_substr(:x, '[^|]*\|', 1, rownum + 1) line 3 dual 4 connect level <= length(:x) - length(replace(:x, '|', ''))) 5 regexp_substr(line || ',', '[^,]*,', 1, 2) = 'ou=managed,' 6 , line '%axyzapple%'; subtxt -------------------------------------------------------------------------------- axyzapple-au axyzapple-readonly axyzapple-write

here's little explanation. have go through query step step.

the inner part of query loop through info (for each |):

sql> select regexp_substr(:x, '[^|]*\|', 1, rownum + 1) line 2 dual 3 connect level <= length(:x) - length(replace(:x, '|', '')); line -------------------------------------------------------------------------------- cn=axyzapple-au,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=31107427,ou=distribution lists,ou=shared mailboxes,dc=core,dc=dir,dc=abc,dc= cn=ea90045052,ou=groups,ou=eprofile,dc=core,dc=dir,dc=abc,dc=com | cn=s0901448,ou=distribution lists,ou=shared mailboxes,dc=core,dc=dir,dc=abc,dc= cn=00900887,ou=distribution lists,ou=shared mailboxes,dc=core,dc=dir,dc=abc,dc= cn=nsmmmm,ou=lrp,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=axyzapple-readonly,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=wwsww-au,ou=lrp,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=alogical_rw,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com | cn=axyzapple-write,ou=managed,ou=groups,dc=core,dc=dir,dc=abc,dc=com |

you loop ou=managed string in sec position:

sql> select regexp_substr(line || ',', '[^,]*,', 1, 2) second_part 2 (select regexp_substr(:x, '[^|]*\|', 1, rownum + 1) line 3 dual 4 connect level <= length(:x) - length(replace(:x, '|', ''))); second_part -------------------------------------------------------------------------------- ou=managed, ou=distribution lists, ou=groups, ou=distribution lists, ou=distribution lists, ou=lrp, ou=managed, ou=lrp, ou=managed, ou=managed,

finally, select relevant part lastly regexp_substr.

sql regex oracle plsql

Comments

Popular posts from this blog

How do I check if an insert was successful with MySQLdb in Python? -

delphi - blogger via idHTTP : error 400 bad request -

postgresql - ERROR: operator is not unique: unknown + unknown -