SQL替换路径中的字符串

时间:2013-02-07 18:20:16

标签: sql

如何用“空白”替换“测试”之前的所有内容? “测试”前面的子文件夹数量可能会有所不同。

C:\ AAA \ BBB \测试\ CCC \ DDD

我希望它是:

测试\ CCC \ DDD

3 个答案:

答案 0 :(得分:2)

MSSQL中的解决方案,如果您正在使用另一个RDMBS,我确信它们具有PATINDEX / SUBSTRING的等效功能。

DECLARE @Path VARCHAR(8000)
        ,@Find VARCHAR(128)

SET @Path = 'C:\aaa\bbb\test\ccc\ddd'
SET @Find = 'Test\'

SELECT SUBSTRING(@Path,PATINDEX('%'+@Find+'%',@Path),LEN(@Path))

http://sqlfiddle.com/#!3/d41d8/8576

答案 1 :(得分:1)

您可以在String中获取字符串Text的索引,并从那里获取子字符串到最后。

答案 2 :(得分:0)

此查询应该适用于任何SQL - 如果需要,您可以添加合成修复。例如,在Oracle中,它将是SUBSTR / INSTR。

SELECT SUBSTR(str, start_pos) final_str
FROM
(
SELECT 'C:\aaa\bbb\test\ccc\ddd' as str 
     , INSTR('C:\aaa\bbb\test\ccc\ddd', 'test', 1) as start_pos
  FROM dual
)
/

SQL>

FINAL_STR
-------------
test\ccc\ddd