我在oracle 10中有一个与正则表达式相关的问题。
假设我有一个像123456; 12345; 454545这样的值存储在clob字段中,是否有一种方法通过正则表达式只过滤第二个模式(12345)知道该值可能超过5位但总是在第一个分号后发生并且在结尾处总是有一个尾随的分号?
非常感谢您对此事的支持,
度过愉快的一天,
答案 0 :(得分:1)
此查询应该为您提供所需的输出。
SELECT REGEXP_REPLACE(REGEXP_SUBSTR('123456;12345;454545;45634',';[0-9]+;'),';')
FROM dual;
答案 1 :(得分:0)
您可以使用此查询过滤任何模式,只需将2更改为任何值,但它应小于或等于字符串中元素的数量
with tab(value) as
(select '123456;12345;454545' from dual)
select regexp_substr(value, '[^;]+', 1, 2) from tab;
答案 2 :(得分:0)
很容易通过一个电话:
select regexp_replace('123456;12345;454545','^[0-9]+;([0-9]+);.*$','\1')
from dual;
也许,regexp表达式可以通过更好看或你的业务逻辑来修改,但我认为这个想法很明确。
答案 3 :(得分:0)
select regexp_replace(regexp_substr(Col_name,';\d+;'),';','') from your_table;