我在SQL Server的表中有一个Field值,它包含文件的路径,该路径用-
字符分隔,我想要的是从开头(零索引)到最后一次出现选择子字符串那个划界的角色。
DECLARE @path NVARCHAR(500)
SELECT @path = 'F:\Fruit Seeds-Category Oil\Quality- Fine Seeds',
我需要提取子串“F:\ Fruit Seeds-Category Oil \ Quality”
我的查询
SELECT LEFT(@path, LEN(@path) - CHARINDEX('-',REVERSE(@path)))
这样做的最佳方式是什么?
答案 0 :(得分:1)
这会找到"的最后一个索引 - "在字符串中:
DECLARE @path NVARCHAR(500) = 'F:\Fruit Seeds-Category Oil\Quality- Fine Seeds';
DECLARE @i INT = 1;
DECLARE @ix INT = 0;
WHILE @i > 0
BEGIN
SET @ix = @i;
SET @i = CHARINDEX('-', @Path, @i + 1);
END
SELECT LEFT(@path, @ix - 1)
您可以清楚地将其放在函数中以供重复使用。