我有预言10.正则表达式CLOB字段
涉及一种正则表达式的一个问题假设我有一个像123456的值; 12345;存储在CLOB字段454545,是否有通过正则表达式的方式只在第二个模式(12345)上过滤,知道该值可能超过5位数,但始终在第一个分号后出现,并始终在尾部有尾随分号?
非常感谢在这个问题上的支持,
有一个愉快的一天,
我有预言10.正则表达式CLOB字段
涉及一种正则表达式的一个问题假设我有一个像123456的值; 12345;存储在CLOB字段454545,是否有通过正则表达式的方式只在第二个模式(12345)上过滤,知道该值可能超过5位数,但始终在第一个分号后出现,并始终在尾部有尾随分号?
非常感谢在这个问题上的支持,
有一个愉快的一天,
该查询应该给你你想要的输出。
SELECT REGEXP_REPLACE(REGEXP_SUBSTR('123456;12345;454545;45634',';[0-9]+;'),';')
FROM dual;
非常感谢。 – user1814129
+1但是:A)可以选择修改'[0-9] *'而不是'[0-9] +'来检测空值。 B)可以使用'replace'替代'regexp_replace'来加快速度。 – ThinkJet
你可以使用此查询只是改变2为任意值过滤任何模式,但应该由一个呼叫字符串中小于或等于元素的数目
with tab(value) as
(select '123456;12345;454545' from dual)
select regexp_substr(value, '[^;]+', 1, 2) from tab;
容易:
select regexp_replace('123456;12345;454545','^[0-9]+;([0-9]+);.*$','\1')
from dual;
也许,正则表达式表达式可以在比较好看或业务逻辑的方式修改,但这个想法,我想,是明确的。
select regexp_replace(regexp_substr(Col_name,';\d+;'),';','') from your_table;
http://sqlfiddle.com/#!4/869cb/10 – Sai
您的输入模式总是会有三个数字吗?在三个用两个分号隔开的数字中?或者你的输入模式可以有无限数量的以分号分隔的数字,而你想要第二个数字。 – Incognito
无限数量的尾随分号。感谢发布。 – user1814129