0

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

C:\aaa\bbb\test\ccc\ddd

我希望它是:

测试\ccc\ddd

4

3 回答 3

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

于 2013-02-07T18:29:01.773 回答
1

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

于 2013-02-07T18:22:06.083 回答
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
于 2013-02-07T18:30:03.993 回答