string - 在PLSQL中提取URL路径段字符串

标签 string plsql oracle-sqldeveloper

我有一个表,其中一个字段 (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/

相关文章:

java - `+`在Java源代码中的Strings在哪里实现?

java - 声明字符串数组导致问题

c# - 需要文本排序/对齐/间距算法

c++ - 对分隔符具有特定约束的拆分字符串

oracle - 如何在 hive 中实现regexp_substr?

sql - 基于系统时间触发(DAY)

java - 使用基于java的正则表达式查询Oracle

c# - PLSQL Oracle Command不允许在同一个命令中出现多个异常

sql - 有条件地选择一列

带有 SQL 开发人员问题的 PostgreSQL