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
下面有个赞
数据:
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