0
我想從VAL列中提取一些字符串,根據下面的粗體正則表達式。這是數據的一個例子,我有來源:在SQL語句中使用正則表達式提取幾個字符串 - Oracle
Table1
-----------------
ID VAL
-----------------
1 GR-RDE
2 GR-RZA-RDE
3 GR-RZA-RDE_RZA
4 GR-RGS
5 GR-RZA-OR-ORC
6 GR-RZA-RDE-OR-ORC_RZA
期望的結果:
> Output
-----------------
ID RESULT
-----------------
1 RDE
2 RZA
2 RDE
3 RZA
3 RDE
4 RGS
5 RZA
5 OR
6 RZA
6 RDE
6 OR
爲了做到這一點,我已經做到了這一點正則表達式: (< = - ?)(RDE | RZA | RGS | OR)([AZ])
- (< = - ):?!?檢查該字符之前是 ' - '
- (RDE | RZA | RGS | OR):搜索'RDE','RZA','RGS','OR'字符串
- (?![AZ]):忽略字符串,如果後面跟着一個字母
正則表達式完美的作品,它忽略了所有的unwhanted部分:
我的問題是,我不覺得用在SQL語句這個表達式(Oracle數據庫)的方式。我試着像這樣的東西,它返回空值進行測試:
select REGEXP_SUBSTR(VAL,'(?<=-)(RDE|RZA|RGS|OR)(?![A-Z])') from Table1;
恐怕Oracle不支持環視:( – Toto
好了,所以也許我需要找到另一個w唉要做到這一點,而不使用正則表達式。 – baboufight