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)... ?

これは、パスの「深さ」が説明どおりであり、5 番目の「\」が探しているものであることを意味します。

于 2016-02-25T18:51:01.967 に答える