2013-03-03 82 views
-1

我使用的是Oracle 11g中的下一個字符串,並有下列字符串以下字段名稱:甲骨文REGEXP-如何獲得

NAME 
'String having ZT-01183 - App # 2' 
'This String having AG-01183 with - Apps # 4' 

我使用下面的正則表達式,但我得到的是以下:ZT-01183 - 應用#2和AG-01183帶 - 應用軟件#4

CASE 
    WHEN REGEXP_LIKE(NAME, 'ZT-|AG-|having') 
    THEN regexp_replace(NAME, '^.*? having ','') 
    END AS NEW_NAME 

我只想要得到的第二天字符串中的語句,這樣的結果應該是AG-01183和ZT-01183。我相反​​,得到一切後。任何幫助將不勝感激。

回答

1

你可以使用

THEN regexp_replace(name, '.*having ([^ ]+).*', '\1') 

編輯:

我原來使用的回顧後想法似乎已被甲骨文泡影不看似能夠使用回顧後。我的編輯使用組來找回你想要的東西。

+0

這似乎只拿出空結果...任何線索,爲什麼我只希望字符串有 – swingard 2013-03-03 23:57:17

+0

@swingard後直接:看到我的編輯 – beny23 2013-03-04 00:17:15

+0

感謝這似乎現在的工作我只需要檢查以確保字符串不能以非空格分隔。謝謝!! – swingard 2013-03-04 00:22:58

0

請嘗試:

THEN regexp_substr(NAME, '[A-Z]{2}-[0-9]{5}')