I have a like below
data :
1234=A||1456=B||1789=C
1245=||1234=V
1234,1133
1456=||1234=1,234||1234
so i wanted to remove all the value after = and before | except for 1234.
expected data :
1234=A||1456=||1789=
1245=||1234=V
1234,1133
1456=||1234=1,234||1234
You can use:
SELECT REGEXP_REPLACE(
value,
'(^|\|)((1234=.*?)|(\d+=).*?)(\||$)',
'\1\3\4\5'
) AS value
FROM table_name
Which, for the sample data:
CREATE TABLE table_name ( value ) AS
SELECT '1234=A||1456=B||1789=C' FROM DUAL UNION ALL
SELECT '1245=||1234=V' FROM DUAL UNION ALL
SELECT '1234,1133' FROM DUAL UNION ALL
SELECT '1456=||1234=1,234||1234' FROM DUAL;
Outputs:
VALUE 1234=A||1456=||1789= 1245=||1234=V 1234,1133 1456=||1234=1,234||1234
sqlfiddle here