我有預言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