Изменить путь к папке в поле с помощью SQL-PL

У меня есть поле в таблице 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 сделать то же самое, но просто применить изменения после последней обратной косой черты, без необходимости жесткого кодирования имени последней папки?

Спасибо

1 ответ

Как насчет подсчета "\" - вы можете просто изменить свое утверждение на

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

Это означает, что "глубина" вашего пути соответствует описанной, а пятая "\" - это та, которую вы ищете.

Другие вопросы по тегам