0

我在一个包含文件路径的 DB2 表中有一个字段。该值将如下所示:

N:\Folder1\Folder2\Folder3\Folder4\ITP201602

我需要一个存储过程,它将更改带有时间戳的最后一个文件夹,它将显示为 ITPYYYYMM。ITP 是一个不会改变的占位符值。查看此路径的其他软件需要它。

这是我当前的查询,它有效:

   CREATE PROCEDURE UPDATE_ITP_DOCUMENT_PATH()
   LANGUAGE SQL
    BEGIN
      UPDATE dbname.tablename
      SET filepathfield = LEFT(filepathfield, LOCATE('\Folder4\',filepathfield,1)+8) || 'ITP' || CHAR(YEAR(current timestamp)*100 + MONTH(current timestamp))
      WHERE idfield = 'idfieldvalue'
    END

问题在于它需要将最后一个文件夹命名为“Folder4”。无论最后一个文件夹的名称如何,我们都希望它能够正常工作。

SQL PL 中有没有办法做同样的事情,但只需在最后一个反斜杠之后应用更改,而不必硬编码最后一个文件夹名称?

谢谢

4

1 回答 1

0

计算“\”怎么样 - 你可以简单地将你的陈述更改为

...LOCATE_IN_STRING(filepathfield,'\',1,5)... ?

这意味着您的路径的“深度”如所描述的那样,而第五个“\”就是您正在寻找的那个。

于 2016-02-25T18:51:01.967 回答