【问题标题】:Is there a library function to split file and parent directory in Oracle PL/SQL?Oracle PL/SQL 中是否有用于拆分文件和父目录的库函数?
【发布时间】:2012-08-09 17:00:00
【问题描述】:

给定一个文件路径,我试图在 Oracle PL/SQL 中分隔文件名和父目录。我想知道 PL/SQL 库中是否已经有可用的函数

【问题讨论】:

标签: oracle plsql


【解决方案1】:

没有真正的需要,如果您使用的是 10g 或更高版本,它只需要一些正则表达式微调,这取决于您的操作系统可能如下所示:

with filepaths as (
  select '/home/oracle/somedir/blah.sql' as linux
       , 'c:\home\oracle\somedir\blah.sql' as windows
    from dual
         )
select regexp_substr(linux, '[^/]+', 1
                     , regexp_count(linux,'/')) as linux
     , regexp_substr(windows, '[^\]+', 1
                     , regexp_count(windows,'[^\]+')) as windows
  from filepaths
       ;

LINUX    WINDOWS
-------- --------
blah.sql blah.sql

【讨论】:

    【解决方案2】:

    可以使用 INSTR 和 SUBSTR 字符串函数来执行此操作,如下所示:

    WITH filepaths AS
      (SELECT '/home/oracle/somedir/blah.sql' AS LINUX,
              'c:\home\oracle\somedir\blah.sql' AS WINDOWS
         FROM DUAL)
    SELECT LINUX,
           SUBSTR(LINUX, 1, INSTR(LINUX, '/', -1)) AS LINUX_PATH,
           SUBSTR(LINUX, INSTR(LINUX, '/', -1)+1) AS LINUX_FILE,
           WINDOWS,
           SUBSTR(WINDOWS, 1, INSTR(WINDOWS, '\', -1)) AS WINDOWS_PATH,
           SUBSTR(WINDOWS, INSTR(WINDOWS, '\', -1)+1) AS WINDOWS_FILE
    FROM filepaths;
    
    LINUX         /home/oracle/somedir/blah.sql
    LINUX_PATH    /home/oracle/somedir/
    LINUX_FILE    blah.sql
    WINDOWS       c:\home\oracle\somedir\blah.sql
    WINDOWS_PATH  c:\home\oracle\somedir\
    WINDOWS_FILE  blah.sql
    

    分享和享受。

    【讨论】:

      猜你喜欢
      • 2014-02-05
      • 2021-06-16
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      相关资源
      最近更新 更多