2014-04-11 41 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