I've a column in oracle that stores values in keys. Just for example-
Column_name |
---|
((key1="value1" AND key2='value1') OR (key1="value1" AND key2='value2')) |
((key1="null" AND key2='value3') OR (key1="value1" AND key2='value4')) |
I want to only extract the value of key2 before OR clause (as there are 2 key2 in every row of this column)
Expected result:
Column_name | Value |
---|---|
((key1="value1" AND key2='value1') OR (key1="value1" AND key2='value2')) | value1 |
((key1="null" AND key2='value3') OR (key1="value1" AND key2='value4')) | value3 |
Can somebody give me roughly an idea how to do this?
CodePudding user response:
Assuming we can describe your logic as extracting the first key2
value, we can try using REGEXP_SUBSTR
with a capture group:
SELECT col, REGEXP_SUBSTR(col, 'key2=''(.*?)''', 1, 1, NULL, 1) AS key
FROM yourTable;