2014-04-11 76 views
2

尋找一些幫助,如果任何人都可以提供一些。我正在使用oracle數據庫,我想修剪一個字符串直到某個字符'/'。這些字段是一個URL的路徑,它們都是不同的大小,所以我需要確保它到達URL中最後的'/',並在此之前刪除所有內容。此外,還有一個會話ID與位於字符串末尾的這些URL中的一些相關聯,並且在它開始前有一個分號,所以我想要刪除包含分號的所有內容,直到semi_colon等。所以基本上我想從URL的開頭和URL末尾刪除內容(如果適用)。這些URL(字符串)的示例如下:修整字符串到SQL中的某些字符(oracle)

Current URLS 

/ingaccess/jsp/mslogon.jsp 
/ingaccess/help/helpie_term_cash_surrender_value.html 
/eportal/logout.do;jsessionid=xr8co1kyebrve47xsjwmzw--.p704 
/eportal/logout.do;jsessionid=gdh_e_e1m1hna0z9ednklg--.p705 
/ingaccess/help/helpie_term_northern_unit_value.html 
/ingaccess/help/helpie_scheduled_rebalance.html 
/eportal/home.action;jsessionid=9vhfbkhunkvtcm5g1dtgsa--.p704 
/ingaccess/help/helpie_catch_up_50.html 
/ingaccess/piechartmaker 
/ingaccess/help/helpie_term_fund_balance.html 

Desired URLS 

mslogon.jsp 
helpie_term_cash_surrender_value.html 
logout.do 
logout.do 
helpie_term_northern_unit_value.html 
helpie_scheduled_rebalance.html 
home.action 
helpie_catch_up_50.html 
piechartmaker 
helpie_term_fund_balance.html 

任何人都知道這裏的簡單解決方法?我嘗試過使用SUBSTR和REPLACE,但似乎無法讓他們工作。

多謝提前,
瑞安

+2

類似的問題:http://stackoverflow.com/questions/5367315 –

+0

@LukeWoodward非常感謝,我一直在尋找,尋找,並沒有發生看到那一個。果然,它就像一種魅力。 – Beardy

+0

@LukeWoodward對不起,再次提出這個話題,但有沒有辦法刪除';'後的所有東西,如果字符串包含它?例如,如果該字符串在其末尾包含'; jsessionid = 9vhfbkhunkvtcm5g1dtgsa - 。p704',請刪除該字符串。所以基本上除去中間的一切。 再次感謝Ryan – Beardy

回答

-1

對不起,我應該更仔細地閱讀。

首先嚐試獲取字符串的左半分號之前: substr := SUBSTR(str, 1, INSTR(str, ';')-1);

,然後讓該字符串的結尾到斜線: parsed := SUBSTR(substr, INSTR(substr, '/', -1)+1, LENGTH(substr));

這應該做到這一點,但我沒有測試,所以我不積極。

+0

您仍然**發佈關於** Oracle SQL **的問題的Java解決方案。 **這不是Java **。 –

+0

恩,這不是Java。這是PLSQL。 – tester

+0

PLSQL不是SQL(除非您正在編寫存儲過程或UDF)。這個問題要求提供一個SQL解決方案。 –

0

試一下這個

SELECT CASE WHEN INSTR (surname,';')>0 THEN SUBSTR(surname,1 
      ,INSTR(surname,';',1,1)-1) ELSE surname END FROM 
(SELECT SUBSTR(column,INSTR(column,'/',-1)+1) AS surname 
FROM tableName) 

測試上的Apex