Oracle:Select 一行中的特定值

Oracle : Select only particular value from a row

下面有个赞

数据:

1234=A||1456=B||1789=C
1245=||1234=V
1234,1133
1456=||1234=1,234||1234

所以我想删除 = 之后和 | 之前的所有值除了 1234.

预期数据:

1234=A||1456=||1789=
1245=||1234=V
1234,1133
1456=||1234=1,234||1234

您可以使用:

SELECT REGEXP_REPLACE(
         value,
         '(^|\|)((1234=.*?)|(\d+=).*?)(\||$)',
         ''
       ) AS value
FROM   table_name

其中,对于示例数据:

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;

输出:

VALUE
1234=A||1456=||1789=
1245=||1234=V
1234,1133
1456=||1234=1,234||1234

sqlfiddle here