正则表达式clob字段

时间:2014-01-10 06:44:35

标签: regex oracle select oracle10g

我在oracle 10中有一个与正则表达式相关的问题。

假设我有一个像123456; 12345; 454545这样的值存储在clob字段中,是否有一种方法通过正则表达式只过滤第二个模式(12345)知道该值可能超过5位但总是在第一个分号后发生并且在结尾处总是有一个尾随的分号?

非常感谢您对此事的支持,

度过愉快的一天,

4 个答案:

答案 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;