Изменить путь к папке в поле с помощью 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)... ?
Это означает, что "глубина" вашего пути соответствует описанной, а пятая "\" - это та, которую вы ищете.