如何从存储过程中的用户定义文件路径获取文件扩展名?

时间:2012-09-21 09:22:27

标签: sql stored-procedures sqlanywhere

我有一个如下所示的存储过程:

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
Noow,它捕获最后三个字母并验证并存储在数据库列中。但是不是捕获最后三个字母,而是在点之后捕获任何其他方式并将文件名存储为用户定义的文件名。在此先感谢!!

1 个答案:

答案 0 :(得分:1)

您可以使用反向子字符串 charindex ,然后获得所需的结果。

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)