0

こんにちは、以下のようなストアド プロシージャがあります。

ALTER PROCEDURE "DBA"."my_enr_test"(in file_name char(255), in uploaded_by char(100))
/* RESULT( column_name column_type, ... ) */
BEGIN

    declare filepath char(100);
    declare validatefile char(255);

    // declare rc bit;

    set filepath = file_name;
    set Filename = Substr(FilePath, PatIndex('.', FilePath),3);

        if filepath <> 'xml' and filepath <> 'csv' then
            set validatefile = 'Invalid File Format'
        else
            set validatefile = 'Valid'
        end if;

    INSERT INTO DBA.pro_import_paths(filename, filevalidate, updated_by) values(filename, validatefile, uploaded_by); 

// RETURN rc;

END

さて、最後の3文字をキャプチャし、検証してデータベース列に保存します。ただし、最後の 3 文字をキャプチャする代わりに、ドットの後にキャプチャしてファイル名をユーザー定義と同じものとして保存する他の方法はありますか。前もって感謝します!!

4

1 に答える 1

1

reversesubstringcharindexを使用すると、必要な結果が得られます..

SET Filename = SELECT reverse(substring(reverse('FilePath.exe'),1, 
               charindex('.', reverse('FilePath.exe'))))

複数の「。」使用できるファイル名に存在します:

SET Filename = SELECT  
               SUBSTRING('FilePath.com.exe',  
      LEN('FilePath.com.exe') - (CHARINDEX('.', reverse('FilePath.com.exe'))-2), 8000)
于 2012-09-21T09:28:05.547 に答える