我有一个表,其中一个字段 (URL_FIELD
) 中包含完整 URL,我想提取 URL 的路径段。以下是一个 URL 的示例(表格中的一个单元格):
https://www1.ncdc.noaa.gov/pub/data/test/paleocean/sediment_files/complete/nantuck-tab.txt
我想要的部分是/pub/data/test/paleocean/sediment_files/complete/
。
到目前为止,我已经:
SELECT SUBSTR(URL_FIELD, INSTR(URL_FIELD, '/pub', -1)) AS PATH_NAME FROM EG_VAR_UPLOAD_TEST;
返回
/pub/data/test/paleocean/sediment_files/complete/nantuck-tab.txt
所以我需要删除最后一个正斜杠后面的部分(nantuck-tab.txt
)。我认为将当前的 SUBSTR() 函数嵌套到另一个 SUBSTR() 函数中可以达到目的,尽管我一直对所有嵌套参数感到困惑。请记住,每个 URL 最后一个正斜杠之后的部分都不同,/pub
之前的部分(有时)也是如此。
最佳答案
使用REGEX_SUBSTR
您可以尝试如下:
我假设每个 URL 中只有最后的正斜杠有所不同,/pub 前面的部分也是如此
SELECT REGEXP_SUBSTR (URL_FIELD, '/pub.*/') AS PATH_NAME
FROM EG_VAR_UPLOAD_TEST;
查看演示:
SQL> SELECT REGEXP_SUBSTR (
'https://www1.ncdc.noaa.gov/pub/data/test/palaeocean/sedimeant_files/complete/nantuck-tab.txt'
,'/pub.*/')
AS PATH_NAME
FROM DUAL
/
PATH_NAME
--------------------------------------------------
/pub/data/test/palaeocean/sedimeant_files/complete
SQL> SELECT REGEXP_SUBSTR (
'https://www1.ncdc.noaa.gov/pub/datttta/test/palaeocean/sedimeant_files/complete/nanttttuck-tab.txt'
,'/pub.*/')
AS PATH_NAME
FROM DUAL
/
PATH_NAME
-----------------------------------------------------
/pub/datttta/test/palaeocean/sedimeant_files/complete
SQL>
关于string - 在PLSQL中提取URL路径段字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43857576/