【发布时间】:2015-11-11 11:28:11
【问题描述】:
我查询带有 URL 的列。这些 URL 来自不同的来源并具有不同的格式。其中一些有参数。我希望查询此列并从第一个参数符号中右修剪 URL。
示例网址:
URLs
http://www.domain1.com/path/page?parameters1¶meters2
https://www.domain2.com/path/page?parameters1¶meters2/somemorestufftoscrape
domain3.com/path/page?parameters1¶meters2
http://www.domain4.com/path/page¶meters1?parameters2
https://www.domain5.com/path/noparametershere.html
domain6.com/path/page=?parameters1¶meters2
我想从 ?,&,=(代表我的案例参数的字符列表)中删除所有内容。
期望的输出:
TrimmedURLs
http://www.domain1.com/path/page
https://www.domain2.com/path/page
domain3.com/path/page
http://www.domain4.com/path/page
https://www.domain5.com/path
domain6.com/path/page
我尝试使用RTRIM如下:
select
URLs
rtrim(URLs, '?=&') as TrimmedURLs
from
MyTable;
查询返回,但 URLs 列等于 TrimmedURLs(我做错了吗?)。
我尝试使用regexp_substr,但在有多个参数包租者的情况下,它会从最后一个而不是第一个修剪(参见页面中的第一个注释)。
- 要查询什么结果?
- 为什么 RTRIM 对我不起作用?
服务器是 Oracle 11g
网址类型为VARCHAR2(1024)
谢谢!
【问题讨论】: