如何用空白替换“测试”之前的所有内容?“测试”前面的子文件夹数量可能会有所不同。
C:\aaa\bbb\test\ccc\ddd
我希望它是:
测试\ccc\ddd
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))
您可以在您的 String 中获取字符串 Text 的索引,并从那里获取一个子字符串。
这个查询应该在任何 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